maven微服务${revision}依赖打包无法识别
1、场景描述
我现在又一个微服务项目,父pom的版本,使用<properties>定义好,如下所示:
<name>ypsx-finance-center</name>
<artifactId>ypsx-finance</artifactId>
<packaging>pom</packaging>
<version>${revision}</version><properties><revision>2.0.21-SNAPSHOT</revision>
</properties>
子项目依赖父项目,如下所示:
<parent><artifactId>ypsx-finance</artifactId><groupId>com.ypsx</groupId><version>${revision}</version></parent>
但是我在使用maven打包的时候,发现子项目中父项目的模块还是${revision},没有改为具体的版本号
2.0.21-SNAPSHOT
2、原因
1.自Maven 3.5.0-beta-1 开始,可以使用 ${revision}, ${sha1} and/or ${changelist} 这样的变量作为版本占位符
2.但是在install或者deploy是无法识别的,就需要这个插件flatten-maven-plugin:发现使用插件之后,发现它是把这个新的pom打到jar包里。也就是说,
这个插件的作用就是在install或者deploy的时候,生成一个新的替换占位符的pom文件,也就是帮你替换了这些变量,接着把新的pom文件打入到jar包里。
所以我们需要再父项目的pom中添加如下插件
<build><plugins><!--1.自Maven 3.5.0-beta-1 开始,可以使用 ${revision}, ${sha1} and/or ${changelist} 这样的变量作为版本占位符2.但是在install或者deploy是无法识别的,就需要这个插件:发现使用插件之后,发现它是把这个新的pom打到jar包里。也就是说,这个插件的作用就是在install或者deploy的时候,生成一个新的替换占位符的pom文件,也就是帮你替换了这些变量,接着把新的pom文件打入到jar包里。--><plugin><groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>1.1.0</version><configuration><updatePomFile>true</updatePomFile><flattenMode>resolveCiFriendliesOnly</flattenMode></configuration><executions><execution><id>flatten</id><phase>process-resources</phase><goals><goal>flatten</goal></goals></execution><execution><id>flatten.clean</id><phase>clean</phase><goals><goal>clean</goal></goals></execution></executions></plugin></plugins></build>
再次install或者deploy后,发现版本已经改为具体的版本号了。
参考:
https://zhuanlan.zhihu.com/p/701573418