在指定存储库元素时,为什么我们还需要<snapshot><enabled>false/true</enabled></snapshot>
和<releases/>
?
它如何影响依赖的特定版本? (1.2.3-SNAPSHOT,1.2.3,1.2.3-RELEASE)
当存在多个存储库时,将搜索哪个存储库以获取工件?工件是如何解决的?
在指定存储库元素时,为什么我们需要false / true?
如果我们想要仅为已发布的版本提供存储库,并且仅为SNAPSHOT版本提供另一个存储库,则需要这样做。
这是企业Maven存储库(即Nexus,Artifactory,Archivia)的常见用例,当某些版本(如SNAPSHOT)仅在存储库中可用时(部署但CI作业,例如),而发布的版本仅可用在另一个存储库中为PROD发布内容的CI作业应该只使用后一个存储库,而不是使用/允许任何SNAPSHOT版本,否则会破坏构建(强制构建可重复性和良好实践)。
来自official Maven Settings documentation
版本,快照:这些是每种工件,版本或快照的策略。通过这两个集合,POM可以在单个存储库中独立于另一个类型更改每种类型的策略。例如,可以决定仅启用快照下载,可能用于开发目的。
启用:
true
或false
,以确定是否为相应类型(releases
或snapshots
)启用此存储库。
当存在多个存储库时,将搜索哪个存储库以获取工件?工件是如何解决的?
声明的顺序将影响Maven使用的查找顺序。检查此official Maven ticket,提供从版本3.0开始的正确行为的修复程序。
它如何影响依赖的特定版本? (1.2.3-SNAPSHOT,1.2.3,1.2.3-RELEASE)
合并上面的两个答案,取决于声明的顺序和哪个存储库允许哪种类型的工件(快照与否)。
进一步参考: