maven pom的存储库元素中启用(快照,发布)标记的用途是什么?

问题描述 投票:6回答:1

在指定存储库元素时,为什么我们还需要<snapshot><enabled>false/true</enabled></snapshot><releases/>

它如何影响依赖的特定版本? (1.2.3-SNAPSHOT,1.2.3,1.2.3-RELEASE)

当存在多个存储库时,将搜索哪个存储库以获取工件?工件是如何解决的?

maven maven-3 pom.xml
1个回答
10
投票

在指定存储库元素时,为什么我们需要false / true?

如果我们想要仅为已发布的版本提供存储库,并且仅为SNAPSHOT版本提供另一个存储库,则需要这样做。

这是企业Maven存储库(即Nexus,Artifactory,Archivia)的常见用例,当某些版本(如SNAPSHOT)仅在存储库中可用时(部署但CI作业,例如),而发布的版本仅可用在另一个存储库中为PROD发布内容的CI作业应该只使用后一个存储库,而不是使用/允许任何SNAPSHOT版本,否则会破坏构建(强制构建可重复性和良好实践)。

来自official Maven Settings documentation

版本,快照:这些是每种工件,版本或快照的策略。通过这两个集合,POM可以在单个存储库中独立于另一个类型更改每种类型的策略。例如,可以决定仅启用快照下载,可能用于开发目的。

启用:truefalse,以确定是否为相应类型(releasessnapshots)启用此存储库。


当存在多个存储库时,将搜索哪个存储库以获取工件?工件是如何解决的?

声明的顺序将影响Maven使用的查找顺序。检查此official Maven ticket,提供从版本3.0开始的正确行为的修复程序。

  • MNG-4400:在工件解析期间不遵守settings.xml中的存储库顺序

它如何影响依赖的特定版本? (1.2.3-SNAPSHOT,1.2.3,1.2.3-RELEASE)

合并上面的两个答案,取决于声明的顺序和哪个存储库允许哪种类型的工件(快照与否)。


进一步参考:

© www.soinside.com 2019 - 2024. All rights reserved.