Использовать регулярные выражения в шаблоне Gradle
Я пытаюсь расширить шаблон gradle/groovy с некоторыми свойствами, и этот файл содержит регулярное выражение. Мне нужно как-то избежать этого, но я не хочу изменять файл. Также я не хотел бы загружать файл в память.
У меня есть что-то вроде этого:
<string> ${MY_VAR}</string>
<string>^[a-zA-Z0-9_.@-]{6,16}$</string>
<string>((?=.*\d)(?!.*\s)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+~]).{8,12})</string>
<string> ${MY_VAR}</string>
И скрипт
copy {
Properties props = getProps()
from(source)
into(dest)
expand props
}
Я хочу, чтобы переменные были заменены, а регулярное выражение осталось нетронутым.
Есть идеи? Спасибо
1 ответ
expand
использует Groovy's SimpleTemplateEngine
Это означает, что вы можете использовать полный синтаксис Groovy, но вы также должны убедиться, что он работает как положено. Если это не работает так, как вы хотите, вы можете использовать другой метод ContentFilterable
интерфейс, например, если вам не нужен причудливый синтаксис Groovy, но всегда ${<something>}
, что-то вроде
filter {
result = it
props.each { name, value ->
result = result.replaceAll("\${$name}", value)
}
result
}