【发布时间】:2020-02-25 04:46:33
【问题描述】:
我有一个 Spring Boot 应用程序,它正在编译成 WAR 格式,并将部署到 Amazon 的 Elastic Beanstalk。这 正在使用 mvnw 构建应用程序。
为了在 Elastic Beanstalk 上使用日志记录和某些配置功能,我需要能够在根目录中包含 -- Spring Boot 应用程序的文件夹,名为 .ebextensions 的文件夹。
显然,因为这个文件夹不是 Spring Boot 配置中指定的类路径的一部分,所以 mvnw 在构建时不包含它。更糟糕的是,将其放在资源文件夹中也不起作用,因为 Elastic Beanstalk 在启动时只会在 WAR 文件的根文件夹中查找该文件夹。
有没有办法配置 mvnw 以便将 .ebextensions 放到适当的位置?或者是否有一些部署程序 我可以在部署 WAR 文件时使用以包含 .ebextensions 吗?或者是否有将 Spring Boot 应用程序部署到 Elastic Beanstalk 的标准方法,允许应用程序包含 .ebextensions 文件?
【问题讨论】:
-
把
.ebextensions目录放到src/main/webapp里面不行吗?这是 WAR 文件的根内容的来源。 -
没有。 .ebextensions 文件不能存在。它需要位于 expanded .WAR 文件的根文件夹中。也就是说,如果 WAR 扩展为 tomcat/webapps/someapp,则 .ebextensions 文件必须在 tomcat/webapps/someapp 文件夹中。
-
src/main/webapp中的所有文件和目录在 maven 构建时都会复制到 WAR 的根目录。例如,我希望你有一个src/main/webapp/WEB-INF目录?如果您展开生成的 WAR 文件,WEB-INF目录将出现在根目录中。您的.ebextensions目录也不例外。 -
我建议您将
.ebextensions放入src/main/webapp- 而不是src/main/webapp/WEB-INF。后者是一个示例。 -
不,史蒂夫,实际上它完全不同。在来这里寻求帮助之前,我尝试了您的建议。发生的情况是 mvnw 正确放置了 WEB_INF 文件夹,但在创建 WAR 文件时忽略了 .ebextensions。如果它没有忽略 .ebextensions,我的问题就不会出现在这里。我怀疑我需要在 POM 文件中进行一些配置。我正在调查...
标签: maven spring-boot amazon-elastic-beanstalk