在指定存储库元素时,为什么我们还需要<snapshot><enabled>false/true</enabled></snapshot>
和<releases/>
?
它如何影响特定版本的依赖项? (1.2.3-SNAPSHOT,1.2.3,1.2.3-RELEASE)
当存在多个存储库时,将在哪个存储库中搜索工件?工件是如何解决的?
答案 0 :(得分:10)
在指定存储库元素时,为什么我们需要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)
合并上面的两个答案,取决于声明的顺序和哪个存储库允许哪种类型的工件(快照与否)。
进一步参考: