java - 使用 Gradle 和转义字符自动扩展属性

标签 java spring spring-boot gradle build.gradle

我正在 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/

相关文章:

java - 文本字段中 int 的默认值

java - 哈希表复制导致空指针

java - Spring 数据休息 : how to send Multi-part file with request Body

spring - 如何调试 HttpMessageNotReadableException?

Java 8Optional.ofNullable.map产生非静态方法引用错误

java - 如何修复 ClassNotFoundException : javax. servlet.http.HttpFilter

java - Spring:指定 xml 命名空间的数据 POST 上的 RequestBody 编码

java - 为什么我的 Spring 应用程序无法识别有人已经登录?

java - SpringBoot @RequestBody 抽象类验证

java - 删除chrome浏览器的cookies和缓存