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

如何通过maven-shade-plugin将BOOT-INF下的类同时复制到生成Jar包的根目录?

如何通过maven-shade-plugin将BOOT-INF下的类同时复制到生成Jar包的根目录?

没问题,这个需求完全可以通过给maven-shade-plugin添加一个额外的资源转换器来实现!你只需要在现有的<transformers>节点里,加入CopyResourceTransformer,它能帮你把BOOT-INF目录下的类复制一份到Jar包的根目录。

具体修改后的插件配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.5.0</version>
    <executions>
        <execution>
            <id>id1</id>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <!-- 保留你原来的Manifest转换器 -->
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <manifestEntries>
                            <Multi-Release>true</Multi-Release>
                        </manifestEntries>
                    </transformer>
                    <!-- 添加这个转换器,复制BOOT-INF/classes下的内容到根目录 -->
                    <transformer implementation="org.apache.maven.plugins.shade.resource.CopyResourceTransformer">
                        <resource>BOOT-INF/classes/</resource>
                        <outputDirectory>/</outputDirectory>
                    </transformer>
                </transformers>
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                    </filter>
                </filters>
            </configuration>
        </execution>
    </executions>
</plugin>

简单解释一下:

  • CopyResourceTransformer的作用就是指定要复制的源资源路径和目标输出路径
  • 这里我们把BOOT-INF/classes/作为源,输出目录设为/(也就是Jar包的根目录),这样打包后,原来在BOOT-INF/classes下的所有类文件,就会同时出现在Jar根目录和BOOT-INF/classes目录里了

你只需要把这段配置替换掉你原来的插件配置,然后执行mvn package重新打包就能看到效果啦!

备注:内容来源于stack exchange,提问作者Da Mike

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 12:57:56