首页 文章

使用Maven元数据发布Ivy SNAPSHOTS

提问于
浏览
3

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

mvn clean install -U

我注意到Ivy没有将maven-metadata.xml文件发布到repos - 我认为这是问题所在?如果是这样,有没有办法让常 Spring 藤 生产环境 这个?

2 回答

  • 3

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

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

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

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

    对快照修订的评论

    最近我得出结论,快照发布不值得付出努力 . 持续交付促进了每个构建都可能发布的概念,常 Spring 藤有一个很好的任务,确保每个构建都是独一无二的 . 当只有一种构建时,我发现我的构建过程更简单 .

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

  • 1

    我有类似的问题,发现以下网站有助于解决它: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://…" />

相关问题