3

我们的常春藤回购设置如下所述:http: //ant.apache.org/ivy/history/latest-milestone/terminology.html

我正在尝试从 Maven 访问它。路径映射到模块没有问题。我们有一个模块 foo,然后 foo 创建工件 foo-api.2.1.0.jar 和 foo.2.1.0.jar(实现)。它的 foo-api.2.1.0.jar 就是问题所在。

我已经尝试过 maven 分类器,但是它想找到 foo.2.1.0-api.jar,而不是 foo-api.2.1.0.jar。

链接中的图表暗示 ivy.xml 或 pom.xml 可以为 mymod-api、mymod-impl 创建示例布局。如何用 pom 做到这一点?

更新:

一个建议是让 maven 工件成为 mymod-api 和 mymod-impl,但这会让 maven 查询 repo:

  /com/mycorp/foo-api/2.1.0.0/foo-api.jar
  /com/mycorp/foo/2.1.0.0/foo.jar

而 Ivy 把它们放在:

  /com/mycorp/foo/2.1.0.0/foo-api.jar
  /com/mycorp/foo/2.1.0.0/foo.jar

因此,仅使用 Maven 工件就无法发现它们。

更新 2:

我们正在使用 Nexus 存储库管理器。

4

2 回答 2

1

如果您使用 Nexus 作为存储库管理器,请查看有关如何配置常春藤构建的答案:

将公共 maven 存储库与 ivy 一起使用

更新1

从 ivy 向 Nexus 发布文件的描述如下:

如何使用 ivy 和 nexus 发布 3rdparty 工件

提前道歉,它非常全面,还将解释分类器在 Maven 中的重要性。

更新2

发布到 Nexus 时:

<ivy:publish resolver="deploy"...>
    <artifacts pattern="${build.dr}/[artifact](-[classifier]).[ext]"/>
</ivy:publish>

确保您使用的是 ibilio 解析器:

<ivysettings>
    <settings defaultResolver="central"/>
    <credentials host="somehost" realm="Sonatype Nexus Repository Manager" username="????" passwd="????"/>
    <resolvers>
        <ibiblio name="central" m2compatible="true"/>
        <ibiblio name="deploy" root="http://somehost/nexus/content/repositories/repo" m2compatible="true"/>
    </resolvers>
</ivysettings>

“陷阱”是 m2compatible="true"。由于历史原因,解析器支持更老的 Maven 1 存储库格式(Ibilio 是Maven Central的旧名称)。

于 2012-12-04T20:07:23.120 回答
1

你不想要分类器,那会照你说的做。您需要的是该工件的工件 ID 为“foo-api”。这不是问题,它按预期工作。

于 2012-12-04T03:24:33.193 回答