Spring 从 POM 中的 Maven 配置文件启动

Spring Boot from Maven Profile in POM

我有一个 spring 具有开发和生产设置的启动应用程序。按照在搜索过程中找到的多条说明,我有一个 application.properties 文件,其中包含:

#-----------this will load the prod or dev according to the @activatedProperties@ value which is set from the pom when built
spring.profiles.active=@activatedProperties@

然后有两个文件:

然后我有一个以 spring-boot pom 作为父级的 pom

<parent>
    <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

然后我将配置文件设置如下:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <activatedProperties>dev</activatedProperties>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <activatedProperties>prod</activatedProperties>
        </properties>
    </profile>
</profiles>

如果我然后按如下方式执行构建:

mvn -DskipTests -Pprod clean compile package

执行此操作后,application.properties 文件显示:

#-----------this will load the prod or dev according to the environment
spring.profiles.active=dev

请注意,它没有按要求使用 prod,而是使用 dev。事实上,无论我做什么,它都只是执行 activeByDefault 配置文件。有没有其他人看到过这个并对正在发生的事情有任何想法。正如您想象的那样,让部署说明说 'edit the POM file to move the activeByDefault property from the dev to prod profile'!

真的很烦人

已解决!

Eclipse 妨碍了;随着构建的发生,eclipse 正在加强默认配置文件;这发生在 :

版本:2019-09 R (4.13.0) 构建 ID:20190917-1200

如果您从命令行关闭 eclipse 和 运行,它就可以正常工作。

如果您使用 eclipse,然后取消选中“首选项”->“常规”->“工作区”下的“访问时刷新”,则它可以工作。线索来自另一个堆栈溢出问题:

感谢所有花时间回复的人。