【问题标题】:How to make IntelliJ run a Spring Boot App with the Maven profile it's built with?如何让 IntelliJ 使用它构建的 Maven 配置文件运行 Spring Boot 应用程序?
【发布时间】:2020-07-28 16:25:11
【问题描述】:

这让我发疯了——我有一个使用 Maven 作为构建工具的 Spring Boot 应用程序。在 POM 中设置了各种配置文件,它们指向项目内相应目录中的资源,因此如果您构建,例如,使用

mvn clean install -PBrandADev

您将获得品牌 A 的 Dev 配置文件,以及相应的 application.properties 和其他配置文件,如果您使用它构建它

mvn clean install -PBrandBProd

您将获得品牌 B 的生产资料。这对我来说很重要,因为它控制着我要连接到的 CMS,因此我可以通过构建为 Brand B Prod 来在调试中运行 Prod 环境的实例,并在出现错误或其他情况时查看问题所在为我正在做的开发工作构建 Dev 配置文件,以插入 Dev CMS。

由于它是一个 Spring Boot 应用程序,因此在每个配置文件的资源目录中,我们都有一个 banner.txt 文件,上面写着“Brand A - Dev”或“Brand A - QA”或该配置文件的任何品牌和 CMS。

不过,就在最近,我正在为特定的个人资料进行构建,例如我想要品牌 B 的 Preview-Prod 环境,我看到它何时启动它的集成测试“Brand B - Preview-Prod”,这是应有的,但是当我使用应用程序配置项启动它时屏幕顶部的运行/调试配置小部件,它开始显示“Brand A - Dev”

我已尝试清理并重新安装该应用程序。我已经尝试重新导入 Maven 依赖项。我尝试过使缓存无效并重新启动 IDE。我尝试取消选择所有配置文件并重新选择我需要的配置文件。没有喜悦。除了,就在今天早些时候,它起作用了,然后我尝试切换回 Dev 环境,但它卡在了 Prod 上。有谁知道我可以做些什么来强制它使用它构建的配置文件?这是 IntelliJ 中的错误还是什么?

【问题讨论】:

  • but then when I start it up using the Application config item in the Run/Debug configurations widget at the top of the screen, it starts up saying "Brand A - Dev" - 你使用 Spring Boot 运行配置吗?
  • 我是——就像在 IDEA 屏幕顶部的菜单下拉菜单中一样?我正在使用它,直到昨天它似乎还是可靠的,现在它的行为非常随机。

标签: java spring-boot maven intellij-idea


【解决方案1】:

您可以改用 spring-boot maven 插件。

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

这允许您使用 mvn spring-boot:run -PBrandADev 并使用正确的 maven 配置文件启动 spring boot 应用程序。

【讨论】:

  • 太棒了 - 是的,这就是诀窍。我还能够将其与@proactive-e 的方法结合起来并复制应用程序 Spring Boot 运行配置,将 -PBrandADev 作为参数放入,所以现在我有一堆运行良好且明确的下拉运行/调试配置.谢谢大家!
  • 呃:对此的补充 - 将参数放在 Spring Boot 运行配置上不起作用。它只是看起来,但毕竟只是随机的。 mvn spring-boot:run -PPROFILENAME 确实有效,但是当我将其传递给我的团队时,我的一位同事报告说他尝试以这种方式进行调试时出错,即 mvn spring-boot:debug -PPROFILENAME
【解决方案2】:

这种行为的一个可能原因可能是用于启动应用程序的Run Configuration 在启动应用程序之前使用默认配置文件构建它。验证配置的Before Launch 部分。

作为一种解决方法,为您要启动的每个配置文件创建一个 Run Configuration,并在运行配置的 VM 选项中指定 -Dspring.profiles.active=&lt;PROFILE-NAME&gt;。此外,您可以在启动之前使用相同的配置文件构建应用程序,相应地调整Before Launch 部分。

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 2015-05-29
    • 2021-11-16
    • 2019-02-05
    • 2017-12-01
    • 2020-07-16
    • 2019-12-04
    • 1970-01-01
    • 2019-07-20
    相关资源
    最近更新 更多