Maven和spring-boot:如何在spring-boot上指定配 置文件:重新打包

问题描述 投票:2回答:2

使用spring-boot,我知道我可以拥有配置文件并使用不同的配置文件,具体取决于活动配置文件。例如命令:

“mvn spring-boot:run -Drun.profiles = default,production”

将使用“application-default.properties”和“application-production.properties”中定义的设置运行我的spring-boot应用程序,第二个文件上的设置将覆盖第一个文件中定义的相同设置(例如数据库连接)设置)。所有这一切目前都运行良好。

但是,我想使用以下命令构建我的spring-boot应用程序并生成一个可运行的jar:

“mvn package spring-boot:repackage”。

这个命令可以很好地生成自包含的runnable jar。问题是,“如何使用前一个命令指定活动配置文件?我用过

“mvn package spring-boot:repackage -Drun.profiles = default,production”

但它不起作用。

java spring maven spring-boot spring-profiles
2个回答
3
投票

弹簧配置文件的目标是应用程序运行时。它们不像Maven那样在打包应用程序时运行。因此,在启动应用程序时必须使用它们,而不是在打包时使用它们。

但是,如果要生成具有某个默认配置文件的不同包,则可以使用Maven资源过滤。毕竟,使用Maven构建Spring Boot可运行jar的方法是遵循标准过程,因此您需要涉及Spring Boot Maven插件:

mvn clean install -PproductionMvnProfile

也可以看看:


0
投票

我在这个帖子中回答了同样的问题:Pass Spring profile in maven build ,但我会在这里重复一遍。

如果某人有相同的情况,要使用特定的配置文件运行spring boot runnable jar或war,你需要在你的默认application.properties文件中提供属性spring.profiles.active,以便在生成工件时动态更改其值,你可以这样做:

首先在spring属性或yaml文件中,添加spring.profiles.active,并将其值作为占位符:

[email protected]@

其次,用maven传递值:

mvn clean package spring-boot:repackage -Dactive.profile=dev

或者如果spring-boot插件已经在你的pom中显示如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

您可以运行以下命令:

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>

然后运行:

mvn clean install -Pdev

您不需要传递2个属性文件(默认值和dev / prod),默认情况下,将首先执行application.properties中的变量。

© www.soinside.com 2019 - 2024. All rights reserved.