You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,开启属性替换功能:

  1. 找到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>
  1. 确保使用的Maven版本不低于3.5.0,新版本对属性传递和解析的支持更完善。

  2. 重新执行构建命令,此时生成的dependency-reduced-pom.xml中的version会被替换为命令行传入的revision实际值。

额外验证点

  • 检查命令行中${{ env.ARTIFACT_VERSION }}-${{ github.run_number }}是否正确输出预期的版本字符串,可以在CI脚本中添加echo命令确认:
echo "实际版本值: ${{ env.ARTIFACT_VERSION }}-${{ github.run_number }}"

内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:08:31