Восприимчивость Gradle к командной строке
Возникла острая необходимость в ядре для тестов использовать различные БД, и для этого нужно, чтобы gradle передавал конфиг в spingboot. Решение, казалось, лежало на поверхности — использовать параметры командной строки: -Dparameter=value, но как оказалось, это не работает для грэдла (хотя отдельно для исполнения тестов работает).
После гугления нашлось такое решение:
test {
//https://www.credera.com/blog/technology-insights/java/gradle-profiles-for-multi-project-spring-boot-applications/
// В аргументах грэдлу передавать через -P
// -Pproperty.name=value
// без парамаметров будет браться конфиг из application.properties
project.ext.applyPropertyIfExists = { propertyKey ->
if(project.hasProperty(propertyKey)) {
systemProperties[propertyKey] = project.getProperty(propertyKey)
}
}
applyPropertyIfExists('spring.profiles.active')
applyPropertyIfExists('spring.datasource.url')
applyPropertyIfExists('spring.datasource.username')
applyPropertyIfExists('spring.datasource.password')
}
Пока я на испытательном сроке, то прежде чем закомитить, надо показать код сеньору.
Он посмотрел и сказал — норм, но надо сделать проще ))
test {
//для -Dproperty=value
systemProperties(System.getProperties())
}
