我还没有找到有关究竟是什么触发了强制更新的文档,并且我发现它的行为根据运行的生命周期阶段而有所不同。这使我得出了一个结论,尽管如果您尝试强制更新(使用-U),并且行家肯定会关心您正在运行哪个阶段,而在不需要的情况下,它会忽略强制更新。
即使我没有直接运行默认的生命周期阶段,我也想强制进行更新。我的用例是使用以下命令发布带有时间戳的快照版本的应用程序:
mvn clean release:perform release:prepare -U
我看到即使快照已版本化,但在内部它仍在其本地存储库中获取最新的SNAPSHOT版本。如果我mvn compile -U
先运行,则快照将更新,并且发行会按预期进行。
我很好奇为什么不使用时间戳版本从联系中获取新的工件,但是我认为这与思想更为狭release的发行插件有关,而不是与maven本身有关。
由于我接受发布插件的失败,因此有一种方法可以在不运行单独的(且不必要的)生命周期阶段的情况下强制执行更新。还是在构建项目时传入由Maven发布插件运行的-U的方法?
首先,您要混合不同的概念。您正在致电:
mvn release:prepare...
它不会在矛盾的情况下启动生命周期,而是运行具有特定目标的release插件prepare
,当然也.. release:perform
运行目标perform
。
此外,释放插件启动子流程(起始Maven的子文件夹中的对象/检出)与所创建的释放(标记的状态),其通常不会不-U选项传送到该子过程。这可以通过使用`mvn -Darguments =“ ...”'完成。
但是,如果您希望在构建过程中强制更新快照,则可以使用以下命令mvn -U...
:
mvn -U clean package
这意味着在Nexus中简单地让maven检查是否有较新的SNAPSHOT(如果可以)将它们下载到本地存储库,而不是等到更新SNAPSHOT的超时到时(请参阅updatePolicy)。
如果您想在不使用maven-release-plugin的情况下更改版本,则可以查看版本-maven-plugin,但在这种情况下,您需要自己进行标记等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句