使用Gradle将.ebextensions添加到Spring Boot Jar的简洁方法

vic*_*csz 7 gradle spring-boot ebextensions

是否有一种干净的方法可以将其他根文件夹添加到使用默认bootRepackage生成的Spring Boot Jar文件中.在我的情况下,我需要AWS beanstalk的.ebextenions文件夹.

我知道我可以破解它 - 例如在bootRepackage之后添加另一个任务来解压缩,重新打包(再次),并重新压缩.有更干净的方式吗?

谢谢

..我试过的两种方式(不起作用):

jar {
    from('src/main/ebextensions') {
        into('ebextensions')
    }
}

bootRepackage {
    from('src/main/ebextensions') {
        into('ebextensions')
    }
}
Run Code Online (Sandbox Code Playgroud)

naX*_*aXa 6

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

bootJar {
    from('./.ebextensions') { into '.ebextensions' }
}
Run Code Online (Sandbox Code Playgroud)

或者

bootWar {
    from('./.ebextensions') { into '.ebextensions' }
}
Run Code Online (Sandbox Code Playgroud)

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

但是,如果您更喜欢约定而不是配置,请将.ebextensions文件夹移动到里面src/main/resources。资源目录的内容自动打包在/BOOT-INF/classes/(不需要脚本)。并且该.ebextensions目录在解压时会被 EB 部署脚本发现。

  • 较新的平台“Amazon Linux 2”不再解析 Jar 内的文件 https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-platform.html (2认同)

Kev*_*hen 4

我仍在努力自己将 Spring Boot 部署到 EBS...

我认为必须调用该文件夹.ebextensions(注意前导点)。所以你会说into('./.ebextensions')而不是into('ebextensions').

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

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