我们的常春藤回购按照此处所述进行设置: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回购经理。
答案 0 :(得分:1)
你不需要分类器,那就是你说的。你需要的是工件id为该工件的“foo-api”。这不是问题,它按预期工作。
答案 1 :(得分:1)
如果您使用Nexus作为存储库管理员,请查看有关如何配置常春藤版本的答案:
Use public maven repository with ivy
此处描述了从常春藤向Nexus发布文件:
how to publish 3rdparty artifacts with ivy and nexus
提前道歉,它非常全面,也将解释Maven中分类器的重要性。
发布到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的旧名称。)