在 Maven 中,确实可以利用 ${revision}
来实现多模块项目的版本统一管理,尤其是在使用一些高级特性如 Maven Release Plugin 或者是在 CI/CD 流程中动态设置版本时。${revision}
是一个特殊的变量,它允许你在构建时动态地使用或设定项目的版本号,这对于自动化的版本管理和持续集成特别有用。
Maven Release Plugin 与 ${revision}
Maven Release Plugin 支持一种模式,可以在执行 mvn release:prepare
时自动替换 ${revision}
为当前的项目版本号。这在准备发布新版本时非常有用,因为你可以事先在 POM 文件中使用 ${revision}
,然后由插件根据实际情况填充正确的版本号。
示例
假设你有一个简单的多模块 Maven 项目结构,希望在不同模块的版本管理上利用 ${revision}
。
-
父 pom.xml 配置:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-parent</artifactId>
<version>${revision}</version>
<packaging>pom</packaging>
<properties>
<!-- 注意:此处也可以直接使用 ${revision},但在某些场景下可能不适用 -->
<revision>1.1.0-dev-SNAPSHOT</revision>
</properties>
<modules>
<module>module-a</module>
<module>module-b</module>
</modules>
<!-- 其他配置... -->
</project>
-
子模块 pom.xml 配置:
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>my-parent</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>module-a</artifactId>
<!-- 由于继承了父 pom 的 ${revision},此处不需要单独定义版本 -->
<!-- 其他配置... -->
</project>