如何使用maven从ivy存储库下载工件

时间:2012-10-10 12:00:48

标签: maven ivy dependency-management pom.xml artifactory

我们正从常春藤搬到maven。我们在使用常春藤发布的工件中有很多工件,因此工件文件夹/路径结构类似于

  1. artifactory/libs-release/[organization]/[module]/[revision]/[type]s/[module](-[classifier]).[ext]

  2. artifactory/libs-release/[organization]/[module]/[revision]/[type]s/ivy.xml

  3. 但是,当我们在maven pom.xml中添加依赖项时,依赖项名称将类似于com.abc.xyz。但是maven试图查看路径com/abc/xyz/文件夹,而我们在com.abc.xyz/my-artifact/1.0.0/jars/my-artifact.jar

    中有神器中的工件

    如何告诉maven(pom.xml)阅读并理解神器中的路径。

    我尝试使用ivy-maven-plugin但是它为一些groovy类提供了classNotFound错误,即使我在我的本地m2存储库文件夹中需要groovy jar。

    *回答 好的,这就是我们做的。我们手动创建了文件夹,然后我们现在使用makepom插件将ivy.xml转换为maven pom.xml 感谢您的所有建议,欢迎更多。

2 个答案:

答案 0 :(得分:3)

你为什么要尝试将Maven融入常春藤。 Ivy在那里利用并模仿当时Maven已经拥有的东西。

由于Ivy可以读取Maven存储库但不是相反,我建议您使用NexusArtifactory设置自己的本地网络(或公司)Maven存储库。然后,您可以逐个上传工件,并将那些Ivy构建标准化为指向新的Maven存储库。 这在开始时需要额外的努力,但我相信它会在以后付出代价。

还有另一个选项,配置Maven读取非标准存储库布局,但为什么要进入该路由?一旦你选择了这条道路,一切都会变得更加困难。

答案 1 :(得分:1)

看一下我的Ivy integration packagejar.macro特别方便,因为它会在您构建jar时自动构建pom.xml。该宏与jar任务非常相似。

我所做的是用我的每个jar构建pom.xml,然后使用mvn deploy:deploy-file将我的jar部署到Maven存储库。

mvn deploy:deploy-file -Dfile=$jar_file
    -D pomFile=pom.xml
    -D repositoryId=$repo_id
    -D url=$repo_url