如何通过build.gradle.kts将配置文件打包进Spring Boot的JAR包
解决Spring Boot JAR包未包含src/main/resources/dummy目录文件的问题
构建独立可执行Spring Boot JAR时,src/main/resources/dummy下的.txt、.cache等文件没被打包进JAR,大概率是构建工具(Maven/Gradle)的资源配置没正确包含该目录,以下是两种主流构建工具的解决办法:
Maven项目处理步骤
- 打开项目根目录的
pom.xml - 在
<build>节点里添加资源配置,明确包含dummy目录下所有文件:
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> <include>dummy/**/*</include> </includes> <filtering>false</filtering> </resource> </resources> <!-- 原有的Spring Boot插件配置保持不变 --> </build>
- 注意:
filtering设为false是为了防止构建工具修改这些非配置文件的内容,保证文件原样打包。
Gradle(Kotlin DSL)项目处理步骤
- 打开项目根目录的
build.gradle.kts - 修改
sourceSets配置,确保resources包含dummy目录:
sourceSets { main { resources { srcDir("src/main/resources") includes += listOf("dummy/**/*", "**/*") } } }
- 如果之前有自定义的资源排除规则,记得检查并移除对
dummy目录的排除项。
验证打包结果
- 执行构建命令:
- Maven:
mvn clean package - Gradle:
./gradlew clean bootJar
- Maven:
- 解压生成的JAR包,查看
BOOT-INF/classes/dummy目录是否存在,且包含对应的.cache和.txt文件 - 代码里读取这些文件时,要用类路径方式读取,示例:
// 读取dummy/data/dataExample3.txt文件 val inputStream = this::class.java.classLoader.getResourceAsStream("dummy/data/dataExample3.txt") // 后续处理输入流即可
这种方式能保证JAR不管在什么位置运行,都能正确读取到包内的文件。
内容的提问来源于stack exchange,提问作者kinda_raffy
相关产品推荐
相关产品推荐

