当前位置:  开发笔记 > 编程语言 > 正文

如何发布依赖于maven中的第三方SNAPSHOT项目的项目

如何解决《如何发布依赖于maven中的第三方SNAPSHOT项目的项目》经验,为你挑选了4个好方法。

我想使用maven发布插件发布一个快照项目'foo-1.0-SNAPSHOT'.该项目取决于尚未发布的第三方模块"bar-1.0-SNAPSHOT".我在项目的pom.xml中使用选项'allowTimestampedSnapshots'来允许带时间戳的快照,但我认为第三方模块(bar)没有时间戳,除非我自己构建它,因为maven仍抱怨未解决的SNAPSHOT依赖项.

有没有办法释放项目foo,无论依赖SNAPSHOT项目如何,如果不是,我怎么能为第三方项目添加时间戳?



1> Stevo Slavić..:

问题在于allowTimestampedSnapshots参数名称,它在文档中,但插件的源代码在表达式中使用了不同的参数名称ignoreSnapshots.

所以只需使用-DignoreSnapshots=true和发布插件的准备目标将忽略快照依赖项.


这是有效的,我相信它是正确的答案(OP正在寻找的答案).惭愧这没有足够的票数不是.1!当然,您并不真的想要发布具有快照依赖性的工件,因为您的消费者也需要找到该快照.如果您只是在测试套件(或类似)中使用快照,那么"-DignoreSnapshots = true"绝对是一个很好的解决方法.

2> 小智..:

使用maven-release-plugin选项

-DignoreSnapshots=true

代替

-DallowTimestampedSnapshots=true

在我的情况下,这将允许使用快照版本的依赖项来准备和执行发布.

应该非常小心地处理此选项,因为如果快照依赖项已更新,则在发行版中使用快照版本可能会在以后中断发布,这在正常情况下不是您想要的.



3> Gareth Davis..:

简短的回答是看到以下答案 ....长的答案是你可以解决它.

我过去应对的唯一方法是有效地分叉第三方库并自行删除一个版本.这当然说起来容易做起来难以理解,如果第三方库是闭源的,那么如果图书馆庞大而复杂则不可能.一条更简单的路线可能是接近第三方并要求他们削减发布.

另一种选择可能是复制他们的pom(确保它没有快照)更改版本信息并在您的存储库中手动安装pom和工件.


不完全正确,看到其他答案,您可以通过`-DignoreSnapshots = true`告诉maven,即使有快照依赖项也可以发布.你应该避免这样做而且只有在没有其他选择的情况下才会这样做,这是另一回事.

4> Brian Fox..:

之前的答案建议更改组和工件ID ...不要这样做,因为maven在以后发布此依赖关系时将不会将其识别为相同的工件,并且您将在类路径上最终得到两个副本.我首选的方法是只更改版本,我会做类似的事情:[原始版本] - [我的组织名称] - [svn版本我拉它]所以我得到像1.0-SONATYPE-3425的东西.通过使用svn rev,我可以再次拉动源并在需要时对其进行修补,并确切地知道我正在使用什么而不将整个源都拉到我自己的svn中.

更新 - 我暂时在博客上发表了这篇文章.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有