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

时间:2016-03-23 12:01:12

标签: maven maven-3 pom.xml

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

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

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

1 个答案:

答案 0 :(得分: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)

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

进一步参考: