背景:父工程有多个子工程,想统一用父工程定义的版本统一管理所有子工程
问题点:子工程中的 标签里的 标签不支持定义变量,无法正常编译
解决方法:
在父工程及所有子工程,统一用${revision}代替,并在父工程定义变量值
1.1.6-SNAPSHOT
在父Pom.xml里增加插件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.2.7</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>
子工程使用父工程定义的变量${revision}
这样便能正常打包
正确打包后,会生成.flattened-pom.xml,打开后会发现变量已被替换
部署后,私仓里可以查看到jar包
容易错的点:
变量名网络上不少使用${version} ,虽然用idea自带的生命周期instatll不报错,但其实没用到flatten-maven-plugin插件打包,由于关键字冲突,导致deploy无法正常部署到私仓。
检查方法:
1、idea执行生命周期instatll看有没生成.flattened-pom.xml,有没替换掉变量
2、idea执行生命周期deploy 有没报错,私仓有没部署成功
原理剖析:
1、插件替换变量生成 .flattened-pom.xml 代替原Maven的pom.xml
详细原理参考以下文章: