如何将bungee.yml纳入Maven Shade插件生成的Uber Jar?
解决Maven Shade Plugin无法包含bungee.yml的问题
嘿,我踩过这个坑!你配置里的IncludeResourceTransformer有个小细节没弄对,导致bungee.yml没被打包进Uber Jar里。咱们来快速修正:
方法1:直接修正Shade插件配置
你之前的<resource>参数理解错了——它不是指目标目录,而是要指定文件在Jar中的完整路径(包括文件名)。把配置改成这样:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer"> <!-- 指定Jar中最终的文件名(根目录下的bungee.yml) --> <resource>bungee.yml</resource> <!-- 本地文件路径,因为和pom.xml同目录,直接写文件名即可 --> <file>bungee.yml</file> </transformer> </transformers> <artifactSet> <excludes> <exclude>net.md-5:bungeecord-api</exclude> <exclude>net.luckperms:api</exclude> </excludes> </artifactSet> </configuration> </execution> </executions> </plugin>
执行mvn clean install之后,你就能在生成的Uber Jar根目录里找到bungee.yml了。
方法2:遵循Maven规范(更推荐)
Maven默认会把src/main/resources目录下的所有文件打包到Jar中,所以更规范的做法是:
- 把你的
bungee.yml移动到src/main/resources目录下 - 删掉Shade插件里的
IncludeResourceTransformer配置
这样Maven会自动把资源文件复制到target/classes目录,Shade插件打包时会自动包含这些文件,不需要额外配置。
两种方法都能解决问题,方法2更符合Maven的项目结构规范,后续维护起来更省心~
内容的提问来源于stack exchange,提问作者Sweet_Phoenix
相关产品推荐
相关产品推荐

