我需要根据特定的环境属性文件创建WAR文件。
所以我创建了2个属性文件,
application.DEV.properties
application.PROD.properties
现在,当我使用Eclipse嵌入式tomcat运行项目时,我将-Dspring.profiles.active=DEV
作为VM参数传递。然后,当我命中端点时,可以看到返回了与DEV相关的消息。当我将PROD作为参数传递时,情况也是如此。
现在,我要执行的操作是使用maven命令创建WAR文件,并以加载特定属性文件的方式传递参数。因此,我已经介绍了Google以及stackoverflow,并找到了如下所示的各种选项
我尝试了以上所有方法。当我按下命令时,将生成WAR。但它无法部署在tomcat上,因为它无法读取属性文件并给出错误。似乎特定于配置文件的属性文件未加载到WAR中。
当我想使用maven生成WAR文件时,我想知道-Dspring.profiles.active=DEV
的替代方案是什么?
如何生成WAR以正确包含特定于配置文件的属性文件?
我正在使用弹簧靴1.5.14.RELEASE。
答案 0 :(得分:2)
正如Mickael对这个答案的评论,您可以从Maven文档中获得有关如何使用配置文件的帮助:https://maven.apache.org/guides/introduction/introduction-to-profiles.html
使用Maven选择配置文件的常用方法是
mvn -Pprod package
prod是您的个人资料的名称。如果您想使用开发人员配置文件进行构建,
mvn -Pdev package
此类配置文件在文件pom.xml
中project>profiles>profile
下定义。在那个地方,您可以指定包装选项。
这是一个个人资料:
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<!-- log configuration -->
<logback.loglevel>DEBUG</logback.loglevel>
<!-- default Spring profiles -->
<spring.profiles.active>dev${profile.no-liquibase}</spring.profiles.active>
</properties>
</profile>
答案 1 :(得分:1)
您必须将spring.profiles.active
传递给运行时,而不是传递给“构建运行时”。在构建时需要的唯一弹簧轮廓将用于测试。
如果发生“对Tomcat的战争”,则可以设置spring.profiles.active
:
(全局)在<tomcat_home>/bin/
中创建名为setnev.sh
的文件(在Windows计算机上分别为.bat
),
export JAVA_OPTS="-Dspring.profiles.active=PROFILE_OF_THIS_TOMCAT"
分别:
set JAVA_OPTS="-Dspring.profiles.active=PROFILE_OF_THIS_TOMCAT"
(全局)在<tomcat_home>/conf/catalina.properties
中添加一行:
spring.profiles.active=PROFILE_OF_THIS_TOMCAT
(在容器级别),在context.xml
处添加一个名为$CATALINA_BASE/conf/[enginename]/[hostname]/
的文件(您也可以将其放入/<webapp_root>/META-INF/
,但是您必须在构建时进行区分时间),其内容如下:
<Context>
<Environment name="spring.profiles.active" value="PROFILE_OF_THIS_TOMCAT" />
</Context>