maven之使用 Maven 元数据发布 Ivy 快照
我有一个 Ivy 项目,将其 Artifact 发布到 Nexus Maven 存储库。然后我需要其他 Maven 项目才能使用这些 jar 作为依赖项。我已经能够让 Ivy 创建和上传 pom.xml 以及 jar ,这工作正常。问题是,当我使用 Ivy 发布新的 SNAPSHOT 版本时——没有任何 Maven 项目会检索新的快照依赖项,即使我这样做了:
mvn clean install -U
我注意到 Ivy 没有将 maven-metadata.xml 文件发布到存储库——我认为这就是问题所在?如果是这样,是否有任何方法可以让 Ivy 生产这个?
请您参考如下方法:
Ivy 可以配置为在解析依赖项时读取此文件(参见 ibilio 解析器的“m2compatible”属性),但是 publish任务不会创建或更新此文件.....
看起来创建和更新“maven-metadata.xml”文件是客户端的工作……这是 Maven 存储库的一个未记录的功能。 (如果有人能找到描述它的地方,也许可以修复 Ivy 错误)。
标准的解决方法是定期安排 Nexus 任务来重新生成元数据文件。见:
一个更极端的解决方案是使用 Maven ANT执行发布步骤的任务....
关于快照修订的评论
最近我得出结论,快照发布不值得付出努力。持续交付提倡每个构建都可能发布并且 Ivy 有一个漂亮的概念 buildnumber确保每个构建都是唯一的任务。当只有一种构建时,我发现我的构建过程更简单。
快照是仅在使用 Maven 与其他项目共享开发构建 Artifact 时才需要的功能。恕我直言,ivy 的动态修订功能更强大,因为它们在构建时解析“最新”修订。查看deliver如何任务与 makepom 结合以下示例中的任务:
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。