将Ivy工件映射到Maven

时间:2012-12-04 02:39:09

标签: maven ivy

我们的常春藤回购按照此处所述进行设置: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

而常春藤给他们:

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

因此,仅使用maven工件会使它们无法发现。

更新2:

我们正在使用Nexus回购经理。

2 个答案:

答案 0 :(得分:1)

你不需要分类器,那就是你说的。你需要的是工件id为该工件的“foo-api”。这不是问题,它按预期工作。

答案 1 :(得分:1)

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

Use public maven repository with ivy

UPDATE1

此处描述了从常春藤向Nexus发布文件:

how to publish 3rdparty artifacts with ivy and nexus

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

UPDATE2

发布到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>

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