想象一下两个项目。第一个是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
生命周期阶段)?
答案 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-4versions:unlock-snapshots
在pom中搜索所有时间戳 锁定快照版本并替换 他们用-SNAPSHOT。 版本:解锁快照