【问题标题】:Publishing Ivy SNAPSHOTS with Maven metadata使用 Maven 元数据发布 Ivy SNAPSHOTS
【发布时间】:2013-03-24 04:47:45
【问题描述】:

我有一个 Ivy 项目,将其工件发布到 Nexus Maven 存储库。然后我需要其他 Maven 项目才能使用这些 jar 作为依赖项。我已经能够让 Ivy 创建并上传 pom.xml 以及 jars,它工作正常。问题是,当我使用 Ivy 发布新的 SNAPSHOT 版本时 - 任何 Maven 项目都不会检索新的快照依赖项,即使我这样做:

mvn clean install -U

我注意到 Ivy 没有将 maven-metadata.xml 文件发布到存储库——我认为这是问题所在?如果是这样,有什么方法可以让 Ivy 制作这个?

【问题讨论】:

    标签: maven nexus ivy maven-metadata


    【解决方案1】:

    Ivy 可以配置为在解析依赖项时读取此文件(请参阅ibilio 解析器的“m2compatible”属性),但publish 任务不会创建或更新此文件.....

    看起来创建和更新“maven-metadata.xml”文件是客户的工作……这是 Maven 存储库的一个未记录的功能。 (如果有人能找到它的描述,也许可以修复一个 ivy 错误)。

    标准解决方法是定期安排 Nexus 任务以重新生成元数据文件。见:

    更极端的解决方案是使用Maven ANT 任务来执行发布步骤....

    关于快照修订的评论

    最近我得出的结论是快照版本不值得努力。持续交付促进了每个构建都可能发布的概念,并且 ivy 有一个漂亮的buildnumber 任务,可确保每个构建都是独一无二的。当只有一种构建时,我发现我的构建过程更简单。

    快照是仅在使用 Maven 与其他项目共享开发构建工件时才需要的功能。恕我直言,ivy 的动态修订功能更强大,因为它们在构建时解决了“最新”修订。在以下示例中查看 deliver 任务如何与 makepom 任务组合:

    【讨论】:

    【解决方案2】:

    我遇到了类似的问题,发现以下网站有助于解决它: http://ssinghvi.wordpress.com/2012/01/26/unable-to-retrieve-latest-artifact-from-sonatype-nexus-using-apache-ivy/

    基本用<ibiblio name="Maven Central" m2compatible="true" useMavenMetadata="false" root="http://…" />

    【讨论】:

    • 很好,但是这篇文章是关于发布的,而不是解决工件的。文档明确指出,此属性仅用于告诉解析器如何以及从何处获取文件。我看不到任何关于发布的内容 (ant.apache.org/ivy/history/latest-milestone/resolver/…)。对于我们这些想要在异构语言/构建环境中使用 Ivy 的人——我们实际上依赖于 maven-metadata.xml——我们被冷落了。
    • 我们使用 Ivy 来发布和检索,所以这个修复对我们来说很好
    猜你喜欢
    • 2016-02-29
    • 2011-10-28
    • 2012-12-22
    • 2018-02-04
    • 1970-01-01
    • 2012-01-20
    • 2014-01-31
    • 1970-01-01
    相关资源
    最近更新 更多