Spring上的-Drun.profiles和-Dspring.profiles.active之间的区别是什么?

时间:2017-12-22 00:29:34

标签: java spring maven spring-boot profile

我试图理解-Drun.profiles-Dspring.profiles.active之间Spring的差异。

另一个answer in SO并没有解释这种差异。

在我的测试中,它们都可用于选择个人资料:

mvn spring-boot:run -Drun.profiles=prod

mvn spring-boot:run -Dspring.profiles.active=prod

那么,差异是什么?

1 个答案:

答案 0 :(得分:4)

spring.profiles.active是Spring Boot应用程序开箱即用支持的属性之一。它用于在Spring Boot应用程序级别指定应运行哪些配置文件。

Spring Boot支持许多不同的属性,可以找到完整列表here

现在,你在这些属性中找不到run.profiles,因为它只是Spring Boot Maven插件支持的属性(是的,它将它转换为'它到列表中也要使用的配置文件,因此这些属性可能看起来很相似),但重点是-Drun.profiles只有在使用Maven插件启动spring启动应用程序时才有效。

然而,在制作中,很可能根本不会成为Maven,应用程序将按原样运行(作为一个大罐子)或者甚至打包为Docker图像或其他东西。因此,对于非maven-plugin使用,您应该使用spring.profiles.active

最后一点,即使在Maven --spring.profiles.active中也可以使用,但它并不是开箱即用的。你应该像这样传递这个参数:

mvn spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=production"

请参阅this item in Github

希望这能澄清两者之间的差异。