我正在 Gradle 中使用属性扩展。一切正常,但对于文件路径。
我正在 Gradle 中使用 processResources 任务
processResources {
filesMatching ('**/application.properties') {
expand project.properties
}
}
我的 Spring application.properties
中有一个属性,如下所示:
root.location = ${rootDir}
在我的 build.gradle
中,我定义了以下内容:
ext['rootDir'] = rootProject.buildDir.path + File.separator + "tmp"
我在application.properties
中得到的结果是
root.location = D:\Projects\myproject\build\tmp
在执行以下操作时,它会在我的 Spring 类中变成 D:Projectsmyprojectbuild\tmp:
@Value("${cpm.repository.root.location}") String rootLocation;
我需要将该属性扩展到:
root.location = D:\\projects\\myproject\\build\\tmp
因为这会导致 D:\projects\myproject\build\tmp
我做错了什么?扩展确实按预期工作,只是扩展时路径中的“\”没有转义。
提前致谢
最佳答案
我认为您应该使用processResources
任务来修改您的资源。
我们就是这样使用它的(使用 application.yml
和 Gradle Kotlin DSL):
tasks {
named<ProcessResources>("processResources") {
outputs.upToDateWhen { false }
filesMatching("**/application.yml") {
filter {
it.replace("#project.version#", version as String)
}
filter {
it.replace("#spring.profiles.active#", profiles)
}
}
}
}
当然,#spring.profiles.active#
是您要在文件中替换的字符串。
关于java - 使用 Gradle 和转义字符自动扩展属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61036350/