我试图理解-Drun.profiles
和-Dspring.profiles.active
之间Spring的差异。
另一个answer in SO并没有解释这种差异。
在我的测试中,它们都可用于选择个人资料:
mvn spring-boot:run -Drun.profiles=prod
或
mvn spring-boot:run -Dspring.profiles.active=prod
那么,差异是什么?
答案 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"
希望这能澄清两者之间的差异。