【问题标题】:Maven update policy snapshots with regards to local and remote snapshotsMaven 更新关于本地和远程快照的策略快照
【发布时间】:2017-02-23 10:38:22
【问题描述】:

如果您的本地和远程快照不同,我只想明确了解 maven 中快照功能的行为。例如,假设我有项目 A,而项目 B 是 B 依赖于 A,我正在本地更改 A 和 B。但其他开发人员也在更改 B 并将项目部署到托管工件的存储库。

如果我在本地更改 B,我如何确保项目 A 将使用本地 B,而不是远程 B,即使我的本地 B 比远程 B 旧?所以基本上我想确保如果我对依赖项项目进行了任何本地更改,我希望任何将修改后的项目作为依赖项的项目都使用本地修改版本而不是远程版本。

我该怎么做?是否有执行此操作的 updatePolicy?

【问题讨论】:

    标签: maven


    【解决方案1】:

    在使用快照构建时,Maven 会将本地 POM 的时间戳与远程进行比较。

    您可以控制使用 updatePolicy 的值 never ,Maven 将永远不会尝试检索另一个版本。只有当它在本地不存在时才会这样做

    需要在maven中设置Settings.xml如下

    <repositories>
            <repository>
              <id>exampleSnapshots</id>
              <name>example Snapshots</name>
              <url>http://example.org/maven2</url>
              <layout>default</layout>
              <snapshots>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
                   ......
              </snapshots>
            </repository>
          </repositories>
    

    其他选项为alwaysdaily(默认)、interval:X(其中 X 是以分钟为单位的整数)。

    maven Documentation中查找更多信息

    【讨论】:

    • 但是如果我没有更新我的本地版本,有没有办法为这种情况获取远程版本?我希望如果我在本地更改了项目,我将获得本地版本,如果没有,我想要最新的远程版本。
    • Maven 更新检查将基于 POM 的时间戳进行,当您在本地构建时(即使没有本地更改)它会更新 POM 时间戳,因此它会将其视为最新
    猜你喜欢
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2021-02-19
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    相关资源
    最近更新 更多