maven-shade-plugin生成的dependency-reduced-pom版本未替换问题求助
解决maven-shade-plugin生成的dependency-reduced-pom.xml版本未替换的问题
问题原因
maven-shade-plugin默认生成dependency-reduced-pom.xml时,不会自动解析并替换pom中的属性占位符(如${revision}),导致文件中保留原始占位符而非命令行传入的实际版本值。
解决方案
在pom.xml中配置maven-shade-plugin,开启属性替换功能:
- 找到maven-shade-plugin的执行配置,添加
PomTransformer并设置replaceProperties为true:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.1</version> <!-- 使用适配你项目的插件版本 --> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <createDependencyReducedPom>true</createDependencyReducedPom> <transformers> <!-- 开启Pom属性替换,将占位符替换为实际值 --> <transformer implementation="org.apache.maven.plugins.shade.resource.PomTransformer"> <replaceProperties>true</replaceProperties> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
确保使用的Maven版本不低于3.5.0,新版本对属性传递和解析的支持更完善。
重新执行构建命令,此时生成的
dependency-reduced-pom.xml中的version会被替换为命令行传入的revision实际值。
额外验证点
- 检查命令行中
${{ env.ARTIFACT_VERSION }}-${{ github.run_number }}是否正确输出预期的版本字符串,可以在CI脚本中添加echo命令确认:
echo "实际版本值: ${{ env.ARTIFACT_VERSION }}-${{ github.run_number }}"
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

