11

有谁知道我如何在 Ivy 中指定 Maven 中的 mirror/mirrorOf 之类的东西?我正在使用本地 Maven 代理 (Nexus),需要该工具来指定 Nexus 代理应该访问哪些父存储库。

在 Maven 中,我做的很简单:

<mirrors>
  <mirror>
    <id>central-mirror</id>
    <mirrorOf>central</mirrorOf>
    <url>http://localhost:8081/content/repositories/central</url>
  </mirror>
</mirrors>

但我在常春藤中找不到这种选择。

4

5 回答 5

8

您需要创建一个可以执行您想要的公共解析器(更多详细信息@ Ivy docs

基本上将以下代码段保存在 $USERHOME/.ivy2/ivysettings-public.xml 下。这应该可以解决问题。

<ivysettings> 
  <resolvers> 
    <ibiblio name="public" m2compatible="true" root="http://localhost:8081/content/groups/public"/> 
  </resolvers> 
</ivysettings>
  • 未修改的标准安装在 URL 中有“nexus”!
  • 如果您需要部署工件,我认为解决方案是执行类似于共享解析器的操作(请参阅上面的文档链接),但我没有尝试过。
  • 我更改了您的本地 URL 以解析为标准的“内容/组/公共”,这更好,因为在上面的 maven 设置片段中,您通过镜像传递所有调用,而不仅仅是中央的调用。只需在 Nexus UI 中将任何其他存储库添加到该组中,就可以了。
  • 如果您的项目加载它自己的 ivysettings 不遵守默认设置,那么这些设置将不会被加载并且您再次回到零:(
于 2010-03-12T19:53:50.740 回答
6

我不认为这样的选择直接存在。您可以尝试实现一个,并将您的 Nexus 存储库放在该链的中心之前。如果我了解链如何正常工作(这是一个很大的假设),Ivy 将在中央之前检查您的存储库,因此只要您的存储库具有相关内容,就不需要中央。

有关详细信息,请参阅教程

于 2009-07-08T16:26:56.330 回答
2

这就是我让它工作的方式(@Heron 的答案对我不起作用):

创建一个包含以下内容的文件:

<ivysettings>
  <settings defaultResolver="default"/>
  <property name="m2-pattern" value="${user.home}/.m2/repository/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]" override="false" />
  <resolvers>
    <chain name="default">
        <ibiblio name="public" m2compatible="true" root="http://nexus-server:8081/nexus/content/groups/public"/>
    </chain>
  </resolvers>
</ivysettings>

从 ant 构建中引用它:

<ivy:settings file="/Users/wdb/.ivy2/ivysettings-public.xml" />

Ivy 现在能够从我的 nexus 存储库中解决依赖关系。

于 2013-03-25T15:41:06.840 回答
-1

我也做过同样的事情,但与 Archiva 非常相似。您只需在新链中声明以下内容:

<chain name="private">
<url name="archiva" m2compatible="true">
  <ivy pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/ivy.xml" /> 
  <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
  <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact].[ext]" /> 
  </url>
</chain>
于 2009-10-06T15:30:36.560 回答
-1

Archiva 管理 Maven 2 存储库(带有 Maven 元数据的工件),通常没有 Ivy 元数据 (ivy.xml)。Maven 2 的布局是 [organisation]/[module]/[revision]/[artifact]-[revision].[ext]。

我们只需提供以下信息

<url name="archiva" m2compatible="true">
  <artifact pattern="http://..../archiva/repository/internal/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
  </url>
</chain>

或者

  <settings defaultResolver="archiva"/>
  <resolvers>
<ibiblio name="archiva" m2compatible="true" root="http://.../archiva/repository/internal/[organization]/[module]/[revision]/[artifact]-[revision].[ext]"/>
  </resolvers>
于 2009-11-04T21:43:55.800 回答