Gradle构建Spring Boot:将根目录.ebextensions文件夹打入Jar包的方法
解决Spring Boot Gradle打包时包含.ebextensions的问题
我之前也碰到过一模一样的问题——AWS Elastic Beanstalk需要.ebextensions文件夹在Jar的classpath下才能加载配置,但Spring Boot的Gradle插件默认只会把src/main/resources里的资源打包进去,根目录的.ebextensions自然就被漏掉了。这里给你两个实用的解决办法:
方法一:直接移动文件夹(最简单)
把项目根目录的.ebextensions文件夹移动到src/main/resources目录下。Spring Boot的Gradle插件会自动把这个目录下的所有资源打包到Jar的BOOT-INF/classes路径里,AWS EB就能正常识别到配置了。这个方法不需要修改任何构建脚本,省心又不容易出错。
方法二:修改build.gradle配置(不移动文件夹)
如果你不想调整文件夹结构,可以在build.gradle里添加配置,让打包任务把根目录的.ebextensions包含进去。因为你用的是Spring Boot 1.5.x版本的插件,对应的打包任务是bootRepackage,添加以下配置即可:
bootRepackage { from('.') { include '.ebextensions/**' // 把文件夹放到Jar的classpath目录下,和resources里的内容同路径 into 'BOOT-INF/classes' } }
或者也可以通过配置sourceSets来扩展资源目录,这样所有资源相关任务都会包含这个文件夹:
sourceSets { main { resources { // 添加根目录为资源源目录,但仅包含.ebextensions srcDir '.' include '.ebextensions/**' // 保留默认的resources目录,避免原有资源被遗漏 srcDir 'src/main/resources' } } }
配置完成后,重新执行bootPackage(或对应版本的bootRepackage)命令,打包完成后可以解压Jar包检查一下,确认BOOT-INF/classes/.ebextensions存在就没问题了。
内容的提问来源于stack exchange,提问作者Daniel Haughton
相关产品推荐
相关产品推荐

