4

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

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

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

这使我假设仅在此1.1.0-SNAPSHOT版本被定义为依赖项而不是精确构建时才使用此版本。

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

4

1 回答 1

9

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

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

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

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

  • versions:lock-snapshots 在 pom 中搜索所有 -SNAPSHOT 版本并将它们替换为该 -SNAPSHOT 的当前时间戳版本,例如 -20090327.172306-4
  • versions:unlock-snapshots在 pom 中搜索所有时间戳锁定的快照版本,并用 -SNAPSHOT 替换它们。版本:解锁快照
于 2010-05-19T12:57:53.763 回答