Dan*_*elC 6 java spring maven spring-profiles spring-boot
使用 spring-boot,我知道我可以拥有配置文件并根据活动配置文件使用不同的配置文件。例如命令:
“mvn spring-boot:run -Drun.profiles=default,production”
将使用“application-default.properties”和“application-production.properties”中定义的设置运行我的spring-boot应用程序,第二个文件上的设置覆盖第一个文件中定义的相同设置(例如db connection设置)。所有这些目前运行良好。
但是,我想构建我的 spring-boot 应用程序并使用以下命令生成一个可运行的 jar:
“mvn 包 spring-boot:repackage”。
此命令确实可以很好地生成自包含的可运行 jar。问题是,¿如何使用前一个命令指定活动配置文件?我用过了
“mvn package spring-boot:repackage -Drun.profiles=default,production”
但它不起作用。
我在这个线程中回答了同样的问题:Pass Spring profile in maven build ,但我会在这里再次重复这个答案。
如果有人遇到同样的情况,要使用特定配置文件运行 spring boot runnable jar 或 war,您需要spring.profiles.active在默认 application.properties 文件中包含该属性,以便在生成工件时动态更改其值,您可以执行以下操作:
首先在 spring 属性或 yaml 文件中,添加 spring.profiles.active 并将其值作为占位符:
spring.profiles.active=@active.profile@
其次,用maven传递值:
mvn clean package spring-boot:repackage -Dactive.profile=dev
Run Code Online (Sandbox Code Playgroud)
或者如果 spring-boot 插件已经出现在你的 pom 中,如下所示:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
您可以改为运行以下命令:
mvn clean package -Dactive.profile=dev
当 jar/war 打包时,该值将设置为 dev。
您还可以利用 maven 配置文件的使用:
<profiles>
<profile>
<id>dev</id>
<properties>
<active.profile>dev</active.profile>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<active.profile>prod</active.profile>
</properties>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
然后运行:
mvn clean install -Pdev
Run Code Online (Sandbox Code Playgroud)
您不需要传递 2 个属性文件(default 和 dev/prod),默认情况下 application.properties 中的变量将首先执行。
spring 配置文件针对应用程序运行时。它们不像 Maven 那样在打包应用程序时进行操作。因此,您必须在启动应用程序时使用它们,而不是在打包应用程序时。
但是,如果您想生成不同的包,每个包都有一些默认配置文件,您可以使用 Maven 资源过滤。毕竟,使用 Maven 构建 Spring Boot 可运行 jar 的方法是遵循标准过程,因此您会涉及到 Spring Boot Maven 插件:
mvn clean install -PproductionMvnProfile
Run Code Online (Sandbox Code Playgroud)
也可以看看:
| 归档时间: |
|
| 查看次数: |
13872 次 |
| 最近记录: |