检查 Maven 变量以避免并行版本控制问题

Checking Maven Variables to avoid parallel versioning problems

我们公司有两个版本控制相似的并行项目。我们称一个为 fw,另一个为 app。版本号基于发布月份 f.e。 19.5、19.6 等。这些可以附加递增的数字,因此 fw 可以使用 19.5.0-15,而 app 是 19.5.0 -125。因此,从技术上讲,任何 fw 版本 都可以 成为 app 中的正确版本,反之亦然。

app 包含更多的子项目。父pom定义了app版本,应用于所有子项目。它还定义了一个变量fw.version,它指向fw当前使用的版本。它也可以在子项目中使用。

一般来说,app中的开发者使用变量project.version来声明子项目之间的依赖关系。

<dependency>
   <groupId>app</groupId>
   <artifactId>app.subproject</artifactId>
   <version>${project.version}</version>
</dependency>

当然他们也可以声明依赖于fw

的一部分
<dependency>
   <groupId>fw</groupId>
   <artifactId>fw.subproject</artifactId>
   <version>${fw.version}</version>
</dependency>

但有时,由于复制和粘贴,他们使用 fw 版本作为 app 依赖项。

<dependency>
   <groupId>app</groupId>
   <artifactId>app.subproject</artifactId>
   <version>${fw.version}</version>
</dependency>

如果 app.subproject 在存储库中可用,这可能会工作一段时间。但最终它将不可用,因此构建崩溃。

有没有办法,也许是通过 maven-plugin,来检测和避免这种问题?在这种情况下,审查 Pull-Request 是不够的。

没试过,但是有强制执行规则

https://maven.apache.org/enforcer/enforcer-rules/reactorModuleConvergence.html

此规则检查 multi-module 构建的不同 "good practises",包括对其他模块的依赖项具有正确版本的要求。

我会试一试。