使用Gradle将.ebextensions添加到Spring引导Jar的干净方法

使用Gradle将.ebextensions添加到Spring引导Jar的干净方法,gradle,spring-boot,ebextensions,Gradle,Spring Boot,Ebextensions,是否有一种干净的方法可以将其他根文件夹添加到使用默认bootRepackage生成的Spring引导Jar文件中。就我而言,我需要AWS beanstalk的.ebextenions文件夹 我知道我可以破解它——例如,在bootRepackage之后添加另一个任务来解压、重新打包(再次)和重新压缩。有没有更干净的方法 谢谢 。。我尝试过的两种方法(不起作用): 我仍在努力将Spring Boot部署到EBS上 我认为该文件夹必须命名为.ebextensions(注意前面的点)。所以你会说into

是否有一种干净的方法可以将其他根文件夹添加到使用默认bootRepackage生成的Spring引导Jar文件中。就我而言,我需要AWS beanstalk的.ebextenions文件夹

我知道我可以破解它——例如,在bootRepackage之后添加另一个任务来解压、重新打包(再次)和重新压缩。有没有更干净的方法

谢谢

。。我尝试过的两种方法(不起作用):


我仍在努力将Spring Boot部署到EBS上

我认为该文件夹必须命名为
.ebextensions
(注意前面的点)。所以你会说
into('./.ebextensions')
,而不是
into('ebextensions')

或者,您可以尝试上载包含JAR和
.ebextensions
文件夹的ZIP文件:

task zip(type: Zip, dependsOn: bootRepackage) {
    from ('./.ebextensions') {
        into '.ebextensions'
    }
    from (jar.outputs.files) {
        into '.'
    }
    destinationDir project.buildDir
}

对于Grails 3,我使用
gradle clean dist
创建一个.zip文件,其中包含用于EB发行版的.war,并使用
Procfile
描述Spring引导命令行。
.ebextensions
文件夹位于我的项目的基本目录中,
projectName
projectVersion
是在
build.gradle
文件中定义的变量:

task dist(type: Zip) {
    from war.outputs.files
    from "src/staging/Procfile" // this file allows us to control how ElasticBeanstalk starts up our app on its Java SE platform
    from('./.ebextensions') {
        into '.ebextensions'
    }
    rename { String fileName ->
        if (fileName == "${projectName}-${projectVersion}.war".toString()) {
            fileName.replace("${projectName}-${projectVersion}", "application")
        } else {
            fileName
        }
    }
}
dist.dependsOn assemble
其中
src/staging
中的
Procfile
的内容如下所示:

web: java -jar application.war

如果将src/main/ebextensions文件夹移动到src/main/resources/.ebextensions,jar任务将自动将其复制到.jar的根目录下(以及/resources中的任何其他文件),EBS需要它,而无需编写任何其他脚本


这差不多是你能得到的最干净的了

我的.ebextensions位于项目的根目录下。这似乎对我有用

战争{ 来自(“./.ebextensions”){ 进入“.ebextensions” } }

对于Spring Boot 2(Gradle),如果
.ebextensions
位于项目的根目录下,请使用以下任务:

bootJar {
    from('./.ebextensions') { into '.ebextensions' }
}

这样,Gradle将
.ebextensions
复制到应用程序包的根目录中


但如果愿意,可以将
.ebextensions
文件夹移动到
src/main/resources
中。资源目录的内容自动打包在
/BOOT-INF/classes/
中(无需脚本)。解包后,EB部署脚本将发现
.ebextensions
目录。

您好,我的.ebextensions文件夹位于Spring Boot项目的根文件夹中,我将上面的代码复制粘贴到build.gradle中,但我没有看到.ebextensions文件夹显示在jar文件的根文件夹中。我错过了什么?ThanksIt是一个隐藏的文件夹,可能不会立即显示。(所以投票)请在这里留下评论:您选择了两个解决方案中的哪一个?较新的平台“Amazon Linux 2”不再解析Jar中的文件
bootJar {
    from('./.ebextensions') { into '.ebextensions' }
}
bootWar {
    from('./.ebextensions') { into '.ebextensions' }
}