先介绍下我这个工程的情况,是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,则继续保留原有的配置,不会互相影响