【问题标题】:If the dependency is a unique snapshot version and install is called, what does maven select?如果依赖项是唯一的快照版本并调用了 install ,那么 maven 会选择什么?
【发布时间】:2011-02-21 08:36:57
【问题描述】:

想象两个项目。第一个是framework-core 项目,它的版本为1.1.0,并且有几个快照版本。另一个是 example-business 项目,它对构建迭代号 9 上的 framework-core 具有以下依赖关系。

<dependency>
  <groupId>org.example</groupId>
  <artifactId>framework-core</artifactId>
  <version>1.1.0-20100518.134928-9</version>
</dependency>

如果在framework-core 上调用mvn install 会发生什么?我发现工件被复制到文件夹并命名为*.1.1.0-SNAPSHOT.jar(如预期的那样)。

这让我假设只有当这个 1.1.0-SNAPSHOT 版本被定义为依赖而不是精确构建时才使用这个版本。

要在不将其部署到 maven 存储库的情况下测试本地内容:调用 mvn install,将依赖项更改为 1.1.0-SNAPSHOT -- 并使用刚刚安装的工件?或者是否可以覆盖特定的构建(使用install 生命周期阶段)?

【问题讨论】:

    标签: maven-2 snapshot


    【解决方案1】:

    当使用带有-SNAPSHOT时间戳版本的依赖项时 - 在这种情况下就像-20100518.134928-9 - 你锁定版本并明确告诉 Maven 使用 这个版本。即使构建了新的-SNAPSHOT,依赖项也不会更新,这就是“锁定快照”的意义所在。

    如果要使用最新的-SNAPSHOT,请声明对-SNAPSHOT版本的依赖以解锁依赖:

    <dependency>
      <groupId>org.example</groupId>
      <artifactId>framework-core</artifactId>
      <version>1.1.0-SNAPSHOT</version>
    </dependency>
    

    手动更改它不是什么大问题,但Versions Maven plugin 的以下目标在某些情况下可能会有所帮助:

    • versions:lock-snapshots 在 pom 中搜索所有 -SNAPSHOT 版本并将其替换为 当前时间戳版本 -快照,例如-20090327.172306-4
    • versions:unlock-snapshots 在 pom 中搜索所有时间戳 锁定的快照版本和替换 他们用-SNAPSHOT。 版本:解锁快照

    【讨论】:

    • 再次感谢您的解释。甚至 maven-version-plugin 的目标也会有所帮助!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 2018-04-16
    • 2014-12-14
    相关资源
    最近更新 更多