Java 从windows系统变量激活Maven配置文件无效
我有以下maven配置文件配置Java 从windows系统变量激活Maven配置文件无效,java,spring,maven,spring-boot,Java,Spring,Maven,Spring Boot,我有以下maven配置文件配置 <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> <property> <name>spring.profiles.
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
<property>
<name>spring.profiles.active</name>
<value>dev</value>
</property>
</activation>
</profile>
<profile>
<id>test</id>
<activation>
<property>
<name>spring.profiles.active</name>
<value>test</value>
</property>
</activation>
</profile>
</profiles>
因此,dev
是spring和maven配置文件的默认设置
然后,我将Windows系统变量SPRING\u PROFILES\u ACTIVE
设置为test
,以明确使用测试配置文件。
根据文档,这应该覆盖我的属性文件中的
dev
值
69.5设置活动弹簧外形
Spring环境对此有一个API,但通常您会设置
系统属性(spring.profiles.active)或操作系统环境
变量(弹簧配置文件处于活动状态)。例如,使用
-D参数(请记住将其放在主类或jar归档之前):
$java-jar-Dspring.profiles.active=production
demo-0.0.1-SNAPSHOT.jar
在Spring Boot中,您还可以在中设置活动配置文件
应用程序、属性,例如
spring.profiles.active=生产
以这种方式设置的值将被系统属性或环境替换
变量设置,但不是由SpringApplicationBuilder.profiles()设置的
方法因此,可以使用后一个JavaAPI来扩充概要文件
不更改默认值
有关详细信息,请参阅第25章“Spring Boot功能”一节中的配置文件
更多信息
现在,当我运行我的Spring应用程序时,它正在Spring中使用test
配置文件,但是maven配置文件激活并没有在这一点上起作用,仍然在使用dev
配置文件
我已尝试将SPRING\u PROFILES\u ACTIVE
设置为
元素中的名称,以确保小写的
版本和大写的
版本没有问题,但这没有帮助
如果我在运行maven时使用-Dspring.profiles.active=test
提供变量,它确实可以工作
非常感谢您的帮助
edit:显然,当我将war部署到tomcat时,这也不起作用,其中
catalina.properties
包含spring.profiles.active=test
。同样,Spring使用了test
,但是Maven仍然停留在dev
上,不幸的是,您想要做的是不可能的。配置文件只能从命令行激活,或者在某些情况下从settings.xml
激活。看见包括指向JIRA问题的链接,讨论挑战以及其他人试图使其发挥作用的内容
系统属性是在上设置的。如何使用环境变量激活配置文件
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
<property>
<name>spring.profiles.active</name>
<value>dev</value>
</property>
</activation>
</profile>
<profile>
<id>test</id>
<activation>
<property>
<name>env.SPRING_PROFILES_ACTIVE</name>
<value>test</value>
</property>
</activation>
</profile>
</profiles>
发展
符合事实的
spring.profiles.active
发展
测验
env.SPRING\u配置文件\u活动
测验
但是在文档中它说它可以使用系统属性配置文件可以根据检测到的构建环境状态自动触发。。。。。。目前,此检测仅限于JDK版本的前缀匹配、系统属性的存在或系统属性的值。
激活配置文件的属性可能来自settings.xml
和命令行,而不是来自应用程序中的文件。在answer上展开。maven配置文件使用-P激活,就像我们使用-D注入环境变量一样。命令类似:mvn clean install-Pdev
,它激活了dev
maven配置文件,而maven配置文件又反过来激活了dev
spring配置文件。@YogenRai我正在寻找一个解决方案,该解决方案将激活spring配置文件设置为aven controls spring的配置文件的相应maven配置文件。。idk,如果这是可以实现的。。但好的目标是:)
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
<property>
<name>spring.profiles.active</name>
<value>dev</value>
</property>
</activation>
</profile>
<profile>
<id>test</id>
<activation>
<property>
<name>env.SPRING_PROFILES_ACTIVE</name>
<value>test</value>
</property>
</activation>
</profile>
</profiles>