根据多模块项目锁定快照版本



我有一个多模块项目(B),它依赖于另一个多模式项目(a)的各个模块。(B)的每个模块可能依赖于(A)的不同部分,但它们都应该使用相同版本的(A)。当前版本被指定为(B)的父pom中的属性。

我希望能够通过一个命令锁定用于特定构建(x.y.z-ts-buildnum)的版本,同时只列出一次要使用的(B)版本。

在父级:

<dep.version>4.1.0-SNAPSHOT</dep.version>

在模块中:

<dependency>
<groupId>com.example</groupId>
<artifactId>B-foo</artifactId>
<version>${dep.version}</version>
</dependency>

我试过了:

  • 版本:锁定快照,但似乎不会锁定属性设置的版本
  • 版本:更新属性,用于更新属性版本,但不锁定快照
  • 编写一个脚本,从本地存储库中解析a的pom的最新快照,但这不起作用,因为每个模块都有自己的时间戳。我可以写一个脚本来查看每个模块,但这已经接近了maven插件所要做的工作量

我建议在模块-b的父级中定义对模块-A的依赖关系,如下所示:

<properties>
<module-a.version>6.5.0-12-SNAPSHOT</module-b.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>A-foo</artifactId>
<version>${module-a.version}</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>A-bar</artifactId>
<version>${module-a.version}</version>
</dependency>
...
</dependencies>
</dependencyManagement>

在你的模块中,你现在只需要写:

<dependency>
<groupId>com.example</groupId>
<artifactId>A-bar</artifactId>
</dependency>

这将使您有可能只在一个地方更改所有模块的版本。在模块A的根目录下。

最新更新