Восприимчивость 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()) }