如何在将Spring Boot WAR文件部署到Tomcat时指定配置文件?

9

目前,我所有的属性都在文件 src/main/resources/application.properties 中定义。但是,我想要在 src/main/resources/config 文件夹中拥有与不同配置文件相关的属性文件,并且我希望能够选择任意一个。例如:

  • application-DEV.properties
  • application-TEST.properties
  • application-SERVER1.properties

那么问题就在于如何选择这些属性。如果我编译成jar文件,那么在运行jar文件时指定配置文件就很容易了,但是现在我只需要将生成的war文件复制到Tomcat的webapps目录即可。


你的意思是说,你有所有这些特定于配置文件的属性可用于打包的war文件,并希望使用特定的属性启动war文件?还是你想在webapps目录中拥有一个特定于配置文件的属性? - lealceldeiro
假设所有这些文件都位于src/main/resources/config文件夹中,我想选择其中一个。 - MetallicPriest
Tomcat配置中的JAVA_OPTS是什么? - Learner
请查看 https://dev59.com/E2Uo5IYBdhLWcg3wtRfh。选项可以像 @Learner 已经说的那样设置为 JAVA_OPTS。 - Manuel
我更喜欢通过修改catalina.properties文件来完成它。使用JAVA_OPTS的问题在于,你必须在Windows和Linux上采用不同的方法。 - MetallicPriest
2个回答

10

好的,我找到了一种方法。在Tomcat的conf目录中,在catalina.properties文件中添加这一行。

spring.profiles.active=<YOUR_PROFILE>

当然,在此处替换您的配置文件名称<YOUR_PROFILE>。例如,如果您正在使用application-TEST.properties,则应该是以下内容。

spring.profiles.active=TEST

1
你如何为多个war文件进行定制?比如说,app1.war应该激活prod.properties,而app2.war应该激活production.properties - Arun Gowda
也可以这样做:在/opt/tomcat/bin/setenv.sh中设置环境变量,使用JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=test"。主要启动脚本catalina.sh会查找setenv.sh以获取其他Java选项。 - ProgramSpree

0
你可以根据你的环境,在服务器启动文件(.bat/.sh)中定义Jvm参数-Dspring.profiles.active=<PROFILE>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接