Maven多模块及version修改的实现方法

对于使用maven构建的java项目,通常聚合多个子模块项目。在版本迭代的过程中经常变更版本号,更新parent版本号,发现子模块版本号没有更新,需要一个个的手动去更新,太麻烦,且容易出错。

创新互联专注于企业全网营销推广、网站重做改版、武陟网站定制设计、自适应品牌网站建设、H5响应式网站成都商城网站开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为武陟等各大城市提供网站开发制作服务。

在版本更新之后,内部模块之间的依赖也需要变更,往往存在遗漏。

MAVEN多个子模块项目

Maven多模块及version修改的实现方法

以上是一个基本的

主项目parent包

maven-multily-module/pom.xml

  • 指定整个应用的dependencyManagement
  • 定义项目的发布的仓库地址distributionManagement
  • 所有第三方依赖的版本号全部定义在properties下
  • 所有内部模块依赖版本号统一使用**${project.version}**
  • 指定所有的子模块modules

项目子模块pom.xml

app-api/pom.xml;app-dao/pom.xml;util/pom.xml;trade-core/pom.xlm;user-core/pom.xml

  • 明确定义parent模块的artifactId,groupId,version
  • 不要定义子模块的version(同parent保持一致)
  • 子模块无需定义groupId
  • 子模块所有的依赖包版本全部集成parent模块,即:子模块不得定义依赖包版本号
  • 子模块需定义是否需要deploy到true
  • 对于需要depoly的子模块【对外发布的,比如dubbo提供的api包】不应该依赖重量级jar包(比如:spring,mybatis等)

子模块packaging为pom

app-core/pom.xml

  • 指定所有的子模块modules
  • 无需定义groupId
  • 明确定义parent模块的artifactId,groupId,version

以上定义规则保证了项目内部模块之间的依赖版本统一,第三方依赖包版本不冲突

MAVEN聚合多个子模块项目版本号修改

虽然按照以上的规则定义模块及依赖,但是在版本迭代过程中需要修改对应的版本号,还是需要顶级pom的版本号,及每个子模块内部parent的版本号。

 
  com.maven.multily.module
  parent
  
  1.1.0-SNAPSHOT
 

这种手工修改方式极容易遗漏,导致项目内部模块版本依赖存在问题。

我们可以通过maven的插件方式来升级整个项目的版本号。方案如下:

在项目顶层pom中添加version插件


  org.codehaus.mojo
  versions-maven-plugin
  2.3
  
   false
  
 

在项目根目录下执行以下命令修改版本号

// 设置新的版本号未1.2.0-SNAPSHOT
mvn versions:set -DnewVersion=1.2.0-SNAPSHOT

以上命令会将maven-multily-module/pom.xml版本修改为1.2.0-SNAPSHOT,且会修改所有子模块内 parent的version为1.2.0-SNAPSHOT。所以建议子模块不设置version,自动从parent继承version即可

相关参数说明

参数默认值说明
allowSnapshotsfalse是否更新-snapshot快照版
artifactId${project.artifactId}指定artifactId
generateBackupPomstrue是否备份pom文件
groupId${project.groupId}指定groupId
newVersion设置的新版本号
nextSnapshotfalse更新版本号为下一个快照版本号
oldVersion${project.version}指定需要更新的版本号可以使用缺省‘*'
processAllModulesfalse是否更新目录下所有模块无论是否声明父子节点
processDependenciestrue是否更新依赖其的版本号
processParenttrue是否更新父节点的版本号
processPluginstrue是否更新插件中的版本号
processProjecttrue是否更新模块自身的版本号
removeSnapshotfalse移除snapshot快照版本,使之为release稳定版
updateMatchingVersionstrue是否更新在子模块中显式指定的匹配版本(如/项目/版本)。

参考 versions-maven-plugin 命令介绍
项目demo代码maven-multily-mudule

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。

当前名称:Maven多模块及version修改的实现方法
文章出自:https://www.cdcxhl.com/article18/iihcgp.html

成都网站建设公司_创新互联,为您提供响应式网站网站改版网站收录网站制作手机网站建设虚拟主机

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

商城网站建设