8

我们正在从 ivy 转向 maven。我们在工件中有很多使用 ivy 发布的工件,因此工件文件夹/路径结构类似于

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

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

但是,当我们在 maven pom.xml 中添加依赖项时,依赖项名称将类似于com.abc.xyz. 但是 maven 试图查看路径com/abc/xyz/文件夹,而我们在 artifactory 中有工件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 感谢您的所有建议,欢迎更多。

4

2 回答 2

4

你为什么要尝试让 Maven 适应 Ivy。Ivy 在那里利用和模仿当时 Maven 已经拥有的东西。

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

还有另一种选择,将 Maven 配置为读取非标准存储库布局,但你为什么要走这条路呢?一旦你选择了这条路,一切都会变得更加困难。

于 2012-10-13T14:13:05.693 回答
3

看看我的Ivy 集成包jar.macro特别方便,因为它会在您构建 jar 时自动构建pom.xmljar宏与任务非常相似。

我所做的是使用我的每个 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
于 2012-11-23T18:02:42.790 回答