如何通过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
相关产品推荐
相关产品推荐

