Gradle 生产与开发build.gradle配置不一样时打包(Springboot)

原创
2018/06/11 11:03
阅读数 5.5K

1.先说下缘由,项目没有使用配置中心,所以本地和开发有不同的build.gradle文件

def env=System.getProperty("profile") ?:"dev"
if(env=='prd'){
    apply from:"build-prd.gradle"
}else{
    apply from:"build-dev.gradle"
}

所以代码是这样的。

如何打包呢,直接 gradle bootWar -Dprofile=prd 即可.

2.如果也想application.properties配置文件开发打包呢?哈哈,可以这样写

def env=System.getProperty("profile") ?:"dev"
bootWar {
   doFirst {
      def file=new File("${buildDir}/resources/main/application.properties")
      println("正在编译war包---环境[${env}]")
      file.newWriter(false).with {
         it.write("spring.profiles.active=${env}")
         it.flush()
         it.close()
      }
   }
}

当然你的springBoot工程要配置成多环境

将默认的application.properties 修改成 

spring.profiles.active=dev

然后分别增加各个版本的版本文件,如

 

展开阅读全文
打赏
0
7 收藏
分享
加载中

引用来自“卖爷爷的老红薯”的评论

gradle 编译的时候,可以传环境变量的参数的,。
gradle bootWar -Dprofile=prd
2018/06/14 10:59
回复
举报
gradle 编译的时候,可以传环境变量的参数的,。
2018/06/13 15:20
回复
举报

引用来自“Feng_Yu”的评论

不建议这么写,你这样实际没把产品环境和开发环境的敏感信息分开。建议直接用spring boot的external configuration功能。所有的敏感信息外部化,而不是写死在application.yml中,在这个配置文件只提供默认配置即可,默认配置按照开发环境,产品环境全部用环境变量覆盖掉。这样打包也没那么麻烦了。
还有这里生产build.gradle与测试build.gradle 还不一样,SO
2018/06/11 18:52
回复
举报
建议是挺好的,我这个只是适合当下场景。
因为客户方技术人员就2个,子项目加起来有7-8个,其它配置文件也不少。所以没有那么精力去做这么多功能或扩展。
后台要接的话就是使用携程 阿波罗配置中心来接😙
2018/06/11 18:48
回复
举报
不建议这么写,你这样实际没把产品环境和开发环境的敏感信息分开。建议直接用spring boot的external configuration功能。所有的敏感信息外部化,而不是写死在application.yml中,在这个配置文件只提供默认配置即可,默认配置按照开发环境,产品环境全部用环境变量覆盖掉。这样打包也没那么麻烦了。
2018/06/11 15:19
回复
举报
更多评论
打赏
5 评论
7 收藏
0
分享
返回顶部
顶部