3

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

mvn clean install -U

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

4

2 回答 2

3

ivy可以配置在解析依赖时读取这个文件(见ibilio解析器的“m2compatible”属性),但是发布任务不会创建或更新这个文件.....

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

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

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

关于快照修订的评论

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

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

于 2013-04-03T20:13:51.120 回答
1

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

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

于 2013-05-22T01:19:00.217 回答