Maven多模块版本统一管理

Maven多模块版本统一管理

问题

在开发一些工具类的时候分了很多模块,类似下图:

Maven多模块版本统一管理_第1张图片

每次改动版本号都要手动去更改每一个子模块的版本号,非常的不方便,所以:

解决

Maven官方文档说:自 Maven 3.5.0-beta-1 开始,可以使用 ${revision}, ${sha1} and/or ${changelist} 这样的变量作为版本占位符。

可以使用maven占位符${revision}来解决这个问题:

注意:只能命名成”revision”,不可以命名成其他的

注意:Idea下使用${revision}定义Parent版本时会提示错误“Reports that usage of properties in modules parent definition is prohibited”,但并不影响使用,只是Idea不支持这种写法而已,升级IDea版本也可以解决

父模块:

在properties中定义revision标签.

	<artifactId>kcommonartifactId>
    <version>${revision}version>
    <packaging>pompackaging>

	<properties>
        
        <revision>1.4.1-SNAPSHOTrevision>
    properties>

子模块

可以直接使用${revision}指定父模块的版本:

 <parent>
        <artifactId>kcommonartifactId>
        <groupId>com.xxxxk.aanangroupId>
        <version>${revision}version>
        <relativePath>../pom.xmlrelativePath>
   parent>

子模块的依赖

多模块工程结构下,会有很多模块依赖的情况,应该使用${project.version}来定义依赖(同父工程下的依赖)的版本

install或者depoy

这么操作下来,是可以成功install或者depoy的,但是如果别人这样引用了你的包,然后打包的时候就会报错:

提示:${revision}占位符出错

在这里插入图片描述

如何解决:

必须使用插件flatten-maven-plugin来解决:

<plugins> 
		<plugin>
                <groupId>org.codehaus.mojogroupId>
                <artifactId>flatten-maven-pluginartifactId>
                <version>1.1.0version>
                <configuration>
                    
                    <updatePomFile>trueupdatePomFile>
                    <flattenMode>resolveCiFriendliesOnlyflattenMode>
                configuration>
                <executions>
                    <execution>
                        <id>flattenid>
                        <phase>process-resourcesphase>
                        <goals>
                            <goal>flattengoal>
                        goals>
                    execution>
                    <execution>
                        <id>flatten.cleanid>
                        <phase>cleanphase>
                        <goals>
                            <goal>cleangoal>
                        goals>
                    execution>
                executions>
            plugin>
        plugins>

你可能感兴趣的:(解决的问题,笔记,maven,java,intellij-idea)