Appearance
资源处理
资源文件(src/main/resources/)由 processResources 任务处理,可以进行过滤、复制和内容替换。
基本配置
kotlin
tasks.named<ProcessResources>("processResources") {
// 过滤文件(替换占位符)
filesMatching("**/*.yml") {
expand(
"appVersion" to project.version,
"appName" to project.name,
"buildTime" to java.time.LocalDate.now()
)
}
// 排除不需要的文件
exclude("**/*.bak", "**/.gitkeep")
}Spring Boot 资源过滤
Spring Boot 项目的 application.yml 中使用 @ 占位符(默认):
yaml
# src/main/resources/application.yml
spring:
application:
name: @project.name@
info:
app:
version: @project.version@
encoding: @project.build.sourceEncoding@kotlin
// build.gradle.kts - 启用 Spring Boot 风格的资源过滤
tasks.named<ProcessResources>("processResources") {
with(copySpec {
from("src/main/resources")
filter<org.apache.tools.ant.filters.ReplaceTokens>(
"beginToken" to "@",
"endToken" to "@",
"tokens" to mapOf(
"project.name" to project.name,
"project.version" to project.version.toString()
)
)
})
}不同环境的资源配置
kotlin
// 根据 profile 选择不同的资源目录
val profile = project.findProperty("profile") as String? ?: "dev"
sourceSets {
main {
resources {
srcDir("src/main/resources")
srcDir("src/main/resources-$profile") // dev/test/prod
}
}
}bash
# 使用 prod 环境配置构建
./gradlew build -Pprofile=prod排除测试资源
kotlin
tasks.named<ProcessResources>("processTestResources") {
// 测试资源不需要替换版本号
// exclude("application.yml")
}下一步
- 单元测试配置 - 配置测试框架