【问题标题】:What is use of enabled(snapshot, releases) tag in maven pom's repository element?maven pom的存储库元素中启用(快照,发布)标签的用途是什么?
【发布时间】:2016-07-10 17:05:46
【问题描述】:

在指定存储库元素时,为什么我们还需要snapshotsreleases

例子:

<repository>
  <id>my-repo</id>
  <url>https://some.url.com/my-repo</url>
  <snapshots>
    <enabled>false/true</enabled>
  </snapshots>
  <releases>
    <enabled>false/true</enabled>
  </releases>
</repository>

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

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

【问题讨论】:

    标签: maven maven-3 pom.xml


    【解决方案1】:

    在指定存储库元素时,为什么我们还需要 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)

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


    更多参考资料:

    【讨论】:

    • 将按照存储库声明的顺序在启用 SNAPSHOT 的存储库中搜索 SNAPSHOT 版本的工件?
    • @Selva 是的,没错。此外,快照将根据updatePolicy 元素值更新或通过命令行-U 选项强制更新
    • Release 类型的存储库的默认值是多少。我的意思是如果我没有指定 true 并且我启用了快照。那么这个 repo 是不能发布还是有什么默认值?
    • 为什么他们在开始设计 pom.xml 之前没有了解 XML 属性?它可以写得更简洁,例如。 &lt;snapshots enabled="true"/&gt; 甚至 &lt;repository id="whatever" snapshots="true"&gt; ...
    • 有关默认值的信息,请参阅stackoverflow.com/questions/61684312/…
    猜你喜欢
    • 2015-12-05
    • 2012-06-08
    • 2023-03-18
    • 2010-12-13
    • 2011-05-05
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多