先介紹下我這個工程的情況,是springboot項目,需要用gradle打包成jar包,提交到storm上執行。由於工程有不同的配置,也就是說打包的時候需要更改application.yml中,spring.profiles.active的屬性,又不想每次打包的時候都去更改這個屬性,就想做成自動化的,執行命令自動更改配置並打包
查閱了相關資料后,發現可以這么做:
在build.gradle里,添加如下代碼:
jar.doFirst{
if(!project.hasProperty('xx')) return def list = [] new File('build/resources/main/application.yml').withReader('UTF-8'){reader-> reader.eachLine{ if(it.contains('active:')) it = ' active: xx' list.add(it + '\r\n') } new File('build/resources/main/application.yml').withWriter('UTF-8'){reader-> list.each{ writer.write(it) } } }
這樣,在當執行gradle jar -Pxx的時候,就會自動將打包后的文件內容給更新了。而執行gradle jar,則繼續保留原有的配置,不會互相影響