如何解决在使用 Visual Studio Code 调试 Spring Boot 应用程序时,如何指定要使用的 Maven 配置文件名称?
这很可能是 this question 的副本,但那里的答案不起作用。
<profiles>
<profile>
<id>dev</id>
<properties>
<activated-profile>dev</activated-profile>
</properties>
</profile>
...
</profiles>
activated-profile
是 application.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 举报,一经查实,本站将立刻删除。