微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在使用 Visual Studio Code 调试 Spring Boot 应用程序时,如何指定要使用的 Maven 配置文件名称?

如何解决在使用 Visual Studio Code 调试 Spring Boot 应用程序时,如何指定要使用的 Maven 配置文件名称?

这很可能是 this question 的副本,但那里的答案不起作用。

在我的 POM 文件中,我定义了几个与此类似的配置文件

<profiles>
    <profile>
        <id>dev</id>
        <properties> 
            <activated-profile>dev</activated-profile>
        </properties>
    </profile>
    ...
</profiles>

activated-profileapplication.properties 文件中使用的一个属性,用于告诉 Spring Boot 使用什么配置文件

...
spring.profiles.active=@activated-profile@
...

如果我在 cmd 提示符下运行 mvn clean install package spring-boot:repackage -Pdev,我可以在 cmd 提示符窗口中看到 The following profiles are active: dev,表明正确的配置文件处于活动状态。

如果我尝试从 Visual Studio Code 启动和调试应用程序,我会在终端中得到 The following profiles are active: @activated-profile@

我尝试在 launch.json 中设置参数:

{
    ...
    "args": ["activated-profile=dev"],"vmArgs": ["Dactivated-profile=dev"],...
}

我还尝试在 settings.json 中为 maven 设置自定义环境变量,以及您无疑会告诉我我重复的问题中的答案:

{
    ...
    "maven.executable.options": "-Pdev","maven.terminal.customEnv": [{
        "environmentvariable": "activated-profile","value": "dev" 
    }],...
}

我还尝试在 activated-profile 前面加上 ---D-D--D,以及重命名 {{1 }} 到 activated-profile 以防连字符以某种方式搞砸了。

没有任何效果

让 VS Code 开始调试的唯一方法是在 POM 文件中指定配置文件

activatedprofile

然而,这并不理想,因为每次我想用不同的配置文件构建应用程序时,我都必须删除那段代码,因为 maven 决定不覆盖该配置文件,如果我在命令行,使 <activation> <activeByDefault>true</activeByDefault> </activation> -Pdev 无用。换句话说,如果我希望 Jenkins 能够构建应用程序,-Pint XML 不应存在于 POM 中。

解决方法

以下解决方案假设您已经安装了 Java 扩展包

如果没有,请继续安装然后继续阅读 (Link to install Java Extension Pack)

在您的 launch.json 配置(运行 -> 打开配置)中,您需要使用 vmArgs 如下:

{
"version": "0.2.0","configurations": [
    {
        "type": "java","name": "Launch MyApp","request": "launch","mainClass": "com.example.MySpringApplication","projectName": "myproject","vmArgs": " -Dspring.profiles.active=dev"
    }
 ]
}

您(当然)可以同时使用多个配置文件,例如,如果您已经将 Spring 安全配置分离到不同的文件中(例如 devsec-application.yaml):

"vmArgs": " -Dspring.profiles.active=dev,devsec"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。