Maven多模块中,parent version如何采用自定${version}表示

背景

在Java的开发中,Maven多模块已经成为了一种标配,通过多模块的管理,我们可以更好地组织我们的工程结构,并且更容易进行团队协作。而在Maven的多模块工程中,通常会有一个父模块,而在这个父模块中,我们通常需要指定一些全局的配置,比如依赖管理,插件管理等等信息,这时候就需要用到parent version的配置。

问题

然而,在实际的生产环境中,父模块的版本号并不一定会满足我们的需求,此时我们就需要采用自定义的parent version。

解决方案

方案一:使用属性定义parent version

在Maven中,我们可以使用属性来定义版本号,在父模块中,我们可以这样定义一个属性:

xml 复制代码
<properties>    <parent.version>1.0.0-SNAPSHOT</parent.version></properties><build>    <plugins>        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-antrun-plugin</artifactId>            <executions>                <execution>                    <phase>validate</phase>                    <configuration>                        <tasks>                            <property name="project.version" value="${parent.version}" />                        </tasks>                    </configuration>                    <goals>                        <goal>run</goal>                    </goals>                </execution>            </executions>        </plugin>    </plugins></build>

然后在子模块中,我们可以引用这个属性来定义parent version,如下所示:

xml 复制代码
<parent>    <groupId>com.example</groupId>    <artifactId>my-parent</artifactId>    <version>${parent.version}</version></parent>

这样,当我们需要修改parent version时,只需要修改属性的值即可。

方案二:使用pom.xml文件定义parent version

如果我们并不想使用属性来定义parent version,可以直接在pom.xml文件中定义parent元素,如下所示:

xml 复制代码
<parent>    <groupId>com.example</groupId>    <artifactId>my-parent</artifactId>    <version>1.2.0</version></parent>

这样,子模块就可以直接继承父模块的所有信息,包括依赖管理,插件版本等等。

总结

在Maven多模块工程中,父模块的版本号是非常重要的配置选项,通过以上两种方式,我们可以灵活地自定义parent version,让我们的工程更加符合我们的实际需求。

相关推荐
请你喝可乐15 小时前
AI Agent Skill 高阶使用指南:从入门到精通
后端
用户9623779544815 小时前
代码审计 | Struts2 —— S2-016 OGNL 注入原理
后端
9号达人15 小时前
为什么你应该在 MQ 里用多个消费者,而不是一个
java·后端·架构
阿星做前端15 小时前
重度 AI 编程用户的一天:我怎么把 Claude Code / Codex 工作流搬进浏览器工作台
前端·javascript·后端
代码羊羊16 小时前
Rust 类型转换全方位通俗易懂指南(as、TryInto、强制转换、Transmute)
后端·rust
jay神16 小时前
基于SpringBoot的宠物生命周期信息管理系统
java·数据库·spring boot·后端·web开发·宠物·管理系统
星栈16 小时前
Rust 全栈一个 main.rs 搞定启动:migration + CQRS + 投影监听,部署只需一个二进制
后端·架构
Penge66616 小时前
一文理清 Mac/Linux 终端配置文件(.bash_profile, .bashrc, .zshrc)
后端
Rust研习社16 小时前
Rust 性能陷阱:那些看起来很优雅但很慢的写法(上)
后端·rust·编程语言
万亿少女的梦16816 小时前
基于SpringBoot的在线考试管理系统设计与实现
java·spring boot·后端