【发布时间】:2019-01-14 13:43:09
【问题描述】:
我需要根据特定的环境属性文件创建WAR文件。
所以我创建了 2 个属性文件,
application.DEV.properties
application.PROD.properties
现在,当我使用 eclipse 嵌入式 tomcat 运行项目时,我将 -Dspring.profiles.active=DEV 作为 VM 参数传递。然后当我点击我的端点时,我可以看到返回的 DEV 相关消息。当我将 PROD 作为参数传递时也是如此。
现在,我想做的是使用 maven 命令创建一个 WAR 文件,并以加载特定属性文件的方式传递参数。所以我参考了 google 和 stackoverflow 并找到了各种选项,如下所示,
- mvn clean install -Drun.profiles=DEV
- mvn clean install -Drun.jvmArguments="-Dspring.profiles.active=DEV"
- mvn clean install -Dspring.profiles.active="DEV"
- mvn clean install -Dspring.profiles.active=DEV
以上方法我都试过了。当我点击命令时,会生成 WAR。但它没有部署在 tomcat 上,因为它无法读取属性文件并给出错误。似乎配置文件特定的属性文件没有加载到 WAR 中。
当我想使用 maven 生成 WAR 文件时,我想知道 -Dspring.profiles.active=DEV 的替代方法是什么?
如何生成 WAR 以正确包含适当的配置文件特定属性文件?
我正在使用 spring boot 1.5.14.RELEASE。
【问题讨论】:
-
好像是资源目录的问题。您可以使用完整路径资源文件夹编辑您的 POM。
to/your/resource -
你好。我认为您混淆了 Spring 配置文件和 Maven 配置文件。如果您想基于配置文件构建和/或部署包,您应该使用 Maven 配置文件而不是 Spring 配置文件。
-
所有步骤(1.-4.)都很好,但仅适用于“mvn clean install”(运行)。我记得根据环境(prod、dev、int、..)构建(不同的)工件是“不好的做法”。但是你可以这样做(例如使用“maven 配置文件”)..激活弹簧配置文件,您必须在运行时设置相应的属性(使用
-Dspring.profiles.active=...启动tomcat(或其他))
标签: java maven spring-boot deployment war