如果依赖项是唯一的快照版本并且调用了install,那么maven会选择什么?

时间:2010-05-19 12:12:14

标签: maven-2 snapshot

想象一下两个项目。第一个是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>

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

这使我假设只有在将1.1.0-SNAPSHOT版本定义为依赖项而非精确构建时才使用此版本。

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

1 个答案:

答案 0 :(得分:7)

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