Задание копирования Gradle, расширение файла yaml, экранирование всей строки - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть следующая задача gradle:

processResources {
    inputs.properties(project.properties.findAll { it.value instanceof String })
    filesMatching("**/*.yaml") {
        filteringCharset = 'UTF-8'
        expand project.properties
    }
}

, которую я использую для обработки файла начальной загрузки application.yaml , который содержит переменные заполнители.

Как можно Я экранирую весь шаблон журнала, не экранируя каждый отдельный символ, сохраняя таким образом шаблон чистым?

application.yaml:

logging:
  pattern:
    console: %clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

Попытка использовать косые строки без успеха:

1.Пробовал:

/%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}/

Ошибка:

Caused by: groovy.lang.GroovyRuntimeException: Failed to parse template script (your template may contain an error or be trying to use expressions not currently supported): startup failed:
SimpleTemplateScript8.groovy: 138: expecting '}', found 'HH' @ line 138, column 60.
   ATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.S
                                 ^

2.Пробовал:

$/%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}/$

Ошибка:

Caused by: groovy.lang.GroovyRuntimeException: Failed to parse template script (your template may contain an error or be trying to use expressions not currently supported): startup failed:
SimpleTemplateScript10.groovy: 138: illegal string body character after dollar sign;
   solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}" @ line 138, column 15.
       console: $/%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}/$
                 ^

1 Ответ

2 голосов
/ 23 февраля 2020

Учитывая, что ваши файлы YAML содержат символы, которые интерпретируются как токены методом expand, полагаясь на Groovy 'SimpleTemplateEngine, вы должны использовать альтернативный метод, такой как filter методы.

В документации приведено несколько примеров filter. Используя базовый Ant ReplaceTokens, вам может повезти больше, поскольку он использует @token@ в качестве обозначения.

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