我正在尝试将一个.ebextensions文件夹添加到我的jar的根级别,以便部署到AWS elastic beanstalk。
我的文件夹结构是:
main:
--src
--resources
--.ebextensions当我构建jar时,我的.ebextensions被放在目标的类路径上,因此在部署时Elastic Beanstalk不会拾取它。
Pom.xml
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>false</addResources>
</configuration>
</plugin>我如何构建才能使ebextensions被ELB拾取?
发布于 2017-06-23 15:50:36
这对我来说很有效,是我找到的(在maven中)解决这个问题的最干净的方法:
在项目的根目录中添加.ebextensions,并在插件部分的末尾添加以下代码片段:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>prepare</id>
<phase>package</phase>
<configuration>
<tasks>
<unzip src="${project.build.directory}/${project.build.finalName}.jar" dest="${project.build.directory}/${project.build.finalName}" />
<copy todir="${project.build.directory}/${project.build.finalName}/" overwrite="false">
<fileset dir="./" includes=".ebextensions/**"/>
</copy>
<zip compress="false" destfile="${project.build.directory}/${project.build.finalName}.jar" basedir="${project.build.directory}/${project.build.finalName}"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>这个插件使用ant解压spring boot生成的最终jar,复制根目录中的.ebextensions,然后使用相同的名称再次压缩(jar)。已在生产环境中测试和运行:)
适用于Spring 1.5.3版本
发布于 2017-03-11 01:07:59
我也遇到了同样的问题,当我按照安迪的建议将.ebextensions移到jar旁边时,当我将它与直接将.conf文件添加到所需的目录(如下所示)相结合时,效果很好:
发布于 2020-11-16 10:49:40
对于那些使用Gradle的用户,为了将.ebextensions内容添加到jar的根目录,需要向您的jar添加以下内容。
它假定.ebextensions目录和内容位于项目的根目录中。
普通Java应用:
jar {
from(".") {
include ".ebextensions/**"
}
}Spring Boot应用程序:
bootJar {
from(".") {
include ".ebextensions/**"
}
}Spring Boot用例与普通的Java用例略有不同,因为Spring Boot实际上是Spring Boot Gradle插件构造jar的,它使用一个特殊的"bootJar“任务来代替标准的Java插件"jar”任务。
我认为对于Maven构建,Javier的答案是最干净的方式。对我来说,这说明了在修改“标准”构建时Gradle优于Maven的灵活性。
https://stackoverflow.com/questions/42702947
复制相似问题