Automati c Расширение свойства с использованием Gradle с escape-символами - PullRequest
0 голосов
/ 05 апреля 2020

Я использую расширение свойства в Gradle. Все работает нормально, но для путей к файлам.

Я использую задачу processResources в Gradle

    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

, который превращается в D: Projectsmyprojectbuild \ tmp in мой класс Spring при выполнении:

@Value("${cpm.repository.root.location}") String rootLocation;

Мне нужно, чтобы свойство было расширено до:

root.location = D:\\projects\\myproject\\build\\tmp

Поскольку это приведет к D: \ projects \ myproject \ build \ tmp

Что я делаю не так? Расширение работает так, как задумано, просто «\» в пути не скрываются при расширении.

Заранее спасибо

1 Ответ

0 голосов
/ 05 апреля 2020

Я думаю, вам следует использовать задачу 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# - это строка, которую вы хотите заменить в своем файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...