【发布时间】:2019-01-24 12:39:39
【问题描述】:
如何使用 maven 为 Spring Boot 应用程序构建环境特定的 War 文件。我创建了 3 个配置文件配置文件,放置在 src/main/resource/ 文件夹中。
- application.prod.properties
- application.dev.properties
- application.test.properties
在将项目作为 Spring Boot 应用程序执行时,我可以通过在 VM 参数选项卡中使用值“-Dspring.profiles.active=dev”指定所需的配置文件类型来运行应用程序。
在这里,作为 Spring Boot 应用程序运行时,我可以指定所需的配置文件。以同样的方式,当我需要使用不同的配置文件进行 MAVEN 安装时。有没有办法在 Maven 安装目标的运行配置中将配置文件指定为 VM 参数列表的一部分。
我有限制,不能接触现有的 java 代码。
我正在使用 STS IDE、Spring boot 1.5.2.RELEASE 版本、Java 1.8 和 oracle db。
以同样的方式也帮助我如何在 Jenkins 中配置配置文件。
我的个人资料配置有两个要求。
- 在 STS IDE 中将应用程序作为带有 VM args 的 spring boot 应用程序运行。
使用了以下 VM ARGS
-Dspring.profiles.active=dev
块引用
(这里我在开发环境中本地启动 SpringBootApp 时遇到异常)。
应用程序启动失败
说明:
无法确定数据库类型 NONE 的嵌入式数据库驱动程序类
行动:
如果您想要一个嵌入式数据库,请在类路径中放置一个受支持的数据库。如果您有要从特定配置文件加载的数据库设置,您可能需要激活它(配置文件“dev”当前处于活动状态)。
块引用
- 如何使用 maven install 通过动态指定配置文件来生成战争文件来执行相同的操作。我找不到解决方案。
【问题讨论】:
-
我不太明白...您是否要求 hot 使用 cmd 参数激活特定的 maven 配置文件(就像您使用 -Dspring.profiles.active=prod 为 spring 配置文件所做的那样)?
-
Spring 配置文件的全部目的是为所有环境提供单个 war / jar 文件。我认为如果您为每个环境创建不同的 war / jar 文件,它将无法达到目的。你能详细说明为什么每个环境需要不同的战争/罐子吗?
-
实际上我需要动态拾取执行 maven 安装的环境特定文件。我不想要差异战争文件。不应在 pom.xml 中配置所需的配置文件。我需要避免在 pom.xml 中为 diff env 进行更改。
-
我不需要多个战争文件。这里的要求是一旦代码准备好部署,我需要使用命令行参数加载配置。或任何其他方式来避免提醒属性文件中的配置。
标签: java maven spring-boot war spring-profiles