【问题标题】:How to download artifacts from ivy repository using maven如何使用 maven 从 ivy 存储库下载工件
【发布时间】:2012-09-30 21:25:49
【问题描述】:

我们正在从 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/ 文件夹,而我们在 com.abc.xyz/my-artifact/1.0.0/jars/my-artifact.jar 中拥有 artifactory 中的工件

我如何告诉 maven (pom.xml) 阅读和理解工件中的路径。

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

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

【问题讨论】:

  • 能否将存储库布局更改为 maven 2 布局或创建虚拟布局? wiki.jfrog.org/confluence/display/RTF/Repository+Layouts
  • 同意改变布局是最好的方法。常春藤支持 Maven,不幸的是不是相反 :-)
  • 谢谢和马克。我们希望避免更改存储库布局,因为我们现在正处于开发周期的中间,而且其他团队也开发了许多组件。因此,我们对破坏他们的构建持怀疑态度。

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。我们发现 Maven 文档与 ivy 相比。同样在其他一些工具/等中,例如 Artifactory,他们总是给出 Maven 的例子,但在 ivy 上没有那么多。尽管我们从项目一开始就开始使用 ivy,但我们在晚上工作时一直在努力获得 ivy 和 artifactory。所以,我们决定迁移到 Maven。我在过去的公司中使用过 maven,并且我发现它在有良好文档的情况下工作得更好。
  • 好的。看来Maven比较主流,遇到问题会更容易找到帮助。
【解决方案2】:

看看我的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

【讨论】:

    猜你喜欢
    • 2016-05-22
    • 2019-08-12
    • 2018-06-26
    • 2012-12-22
    • 2013-05-10
    • 2015-11-29
    • 1970-01-01
    相关资源
    最近更新 更多