首页 > 其他分享 >Maven多模块中,parent version如何采用自定${version}表示

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

时间:2024-04-15 17:56:48浏览次数:22  
标签:定义 parent Maven version 模块 属性

背景

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

问题

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

解决方案

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

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

<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,如下所示:

<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元素,如下所示:

<parent>
    <groupId>com.example</groupId>
    <artifactId>my-parent</artifactId>
    <version>1.2.0</version>
</parent>

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

总结

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

标签:定义,parent,Maven,version,模块,属性
From: https://www.cnblogs.com/bigleft/p/18136610

相关文章

  • maven-search一款鲁班大叔开发的maven依赖搜索神器
    一款好的插件往往能提高我们的开发效率。今天就给大家安利一款maven依赖搜索插件。插件是自己一直关注的鲁班大叔开发的,用了几天真的好用,废话不多说,我们就来看看这是一款什么插件能干什么?在IDEA中,我们可以使用一些插件来帮助我们更好地管理和搜索Jar包。其中,MavenSea......
  • Maven的下载安装配置
    Maven的下载安装配置Maven是什么Maven是基于项目对象模型(POMprojectobjectmodel),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。通俗的讲maven就是专门用于构建和管理项目的工具,他可以帮助我们去下载我们所需要jar包,帮助我们去管理项目结构,帮......
  • IDEA中Maven项目修改JSP后通过配置Tomcat实现立即生效
    参考:IDEA中Facets和Artifacts配置说明idea中artifacts、facets、modulesIntelliJIDEA部署Web项目,终于搞懂了传统SpringMvc项目目录和对应tomcat配置如下:在日常开发过程中,我们修改完java代码后,接着就点击Build编译,然后就可以去验证代码了(前提是On'Update'Action选......
  • IDEA突然提示git is not installed Cannot identify version of git executable:no re
    闲话:早上来打开IDEA编辑器,突然发现Git消失了,下意识点了一下安装git,等了一会发现安装失败!好嘛,大早上的事来了。随后调整了一个上午,最后实在忍不住起来上厕所,烦躁的不行把笔记本关机重启,回来发现居然自己恢复了。现在我把我查询的过程都记录下来,希望能有帮助到......
  • D2. Set To Max (Hard Version)
    原题链接题解具体想\(a\)是如何一步一步变成\(b\)是很复杂的,所以我们换个角度思考(比如贡献)遍历每一个\(a[i]\)看看他们能帮助哪些\(a[j]\)变成\(b[j]\)而且不妨碍\((i,j)\)中\(a\)的元素,用数学语言表达就是\(use[j]=1;a[i]=b[j]>a[j];a[l]<a[i],l\in(i,j)or(j,i......
  • 再次理解Android targetSdkVersion
    1.问题发生第一问题发生:两个APP访问同一个系统类android.net.IpConfiguration,均正常编译生成apk安装到同一台设备上(排除了外部因素)。一个app能正常访问IpConfiguration的属性IpAssignmentipAssignment,另一个却报错没有这个属性。出问题的那个app,我通过反射获取获取并打印了Ip......
  • [openEuler]使用x2openEuler将CentOS8.2升级openEuler22.03-LTS-SP3提示MultiVersionP
    先上截图: 解决方案:卸载相关rpm包即可,内核卸载可通过#比如我要找到未使用的kernel-core的内核并卸载#动刀内核有无法启动的风险,请自行确认#查看当前内核uname-r#【输出结果】kernel-core-4.18.0-193.28.1.el8_2.x86_64#查看当前安装的kernel-core内核rpm-qkerne......
  • 基于dremio 安装包进行源码依赖包maven 私服重建的一个思路
    dremio25.0版本已经发布了,但是如果希望自己源码构建,但是缺少一些依赖造成编译会有问题,但是我们可以直接基于官方提供的下载包的文件进行maven私服的重建,以下说明下简单流程参考流程下载软件包这个可以从dremio官网下载到最好选择一个可以构建的分支本地构建下此步......
  • maven学习
    maven学习主要介绍一下在学习maven中所踩的坑,首先当时看的是黑马的视频,但是都是19年的了,再配置pom.xml的时候都没有配置jdk,而且有些东西也已经过时了,所以推荐在学习的时候先去查找最近的资料来方便学习【尚硅谷新版Maven教程(高效入门maven,上手又快又稳)】https://www.bilibili.co......
  • maven里mvn命令
    mvn命令最基础的就是进入有pom.xml里面进行mvncompile汇编好后在这个界面下生成一个target文件夹不想要了就mvnclean就可以但是如果想要汇编test里的代码的话就需要mvntest-compile这样才能单独汇编test里的代码,mvncompile只负责main里的代码 如果想对项目进行测试,可......