注意井
请参阅下面问题的编辑部分,因为进一步的调查已经使这个问题的大部分变得多余。
类似于这个问题,我似乎不能在启动时使用VSCode将环境变量传递给我的应用程序。问题是,我不知道是什么(或者是否)扩展导致了这个问题。
我有VSCode 1.38.1与以下扩展;
我想做的是使用maven概要文件有条件地引入依赖项,并使用环境变量触发它。在我的pom里。xml,我有;
<profiles>
<profile>
<id>dev-mysql</id>
<activation>
<!-- activate if system properties 'env=dev-mysql' passed in on launch.json env property from VSCode -->
<!-- Following does not work :( -->
<property>
<name>env</name>
<value>dev-mysql</value>
</property>
<!-- Obtain the following info by running - mvn enforcer:display-info -->
<!-- <os>
<name>windows 7</name>
<family>windows</family>
<arch>amd64</arch>
<version>6.1</version>
</os> -->
</activation>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
</dependencies>
</profile>
</profiles>
我尝试通过以下方式将该env
值设置为launch.json;
{
"type": "java",
"name": "Debug (Launch)-MyServiceApplication<my-service>",
"request": "launch",
"mainClass": "myapp.MyServiceApplication",
"projectName": "my-service",
"vmArgs": "-Dspring.profiles.active=local-mysql",
"env": {
"env": "dev-mysql"
}
}
我还尝试通过设置添加maven customEnv。作为Maven for Java扩展的json似乎表明“……这些环境变量值将在第一次执行Maven之前添加到终端会话”。我的设置。json文件看起来像;
{
"java.configuration.updateBuildConfiguration": "automatic",
"files.exclude": {
"**/.classpath": true,
"**/.project": true,
"**/.settings": true,
"**/.factorypath": true
},
"maven.terminal.customEnv": [
{
"environmentVariable": "env",
"value": "dev-mysql"
}
]
}
我通过点击F5来执行我的应用程序,据我所知,F5会执行启动中显示的内容。上面的json片段。我不太明白这里是如何调用maven的。然而,无论如何,它似乎永远都找不到环境变量,因此包含特定于配置文件的mysql依赖项。即使我使用Spring Boot Dashboard,我也会得到同样的结果;mysql依赖项无法识别,因此我最终无法加载驱动程序类:com.mysql。希杰。jdbc。驱动程序
如果我把
有没有人知道如何设置环境变量,以便通过这种配置识别它们?另外,如果我用这个设置点击
F5
(是maven,是Java)时,能提供更多关于实际执行内容的信息,我们将不胜感激。
编辑:
一些进一步的调查表明,我是“...混淆环境变量和系统属性”的评论。
这篇文章还建议,“你不能根据构建计划开始执行后定义的系统属性激活配置文件”,这很可能是我刚点击F5执行应用程序时发生的情况。这还链接到本答案中的一些进一步信息,其中澄清了if不起作用,因为“……在确定有效POM之前,首先要评估配置文件。”。
我的解决方法是不使用F5,而是,当我设置了
sping-filaces-active=local-mysql
时,我必须使用Maven forJavaExplorer来执行自定义的sping-start目标:run-Pdev-mysql
所以我最后的问题是;
考虑到我在VSCode中添加的扩展以及上述发布。json,当我用这个设置点击
F5
时,实际执行的是什么?是Maven、Java还是其他什么?如果是Java,pom是如何实现的。xml发挥作用了吗?如果是Java,有没有调整发布的方法。json是否改为使用mvn
?
当我点击F5时,有没有办法提高日志记录的冗长程度,以便更好地理解实际正在执行的内容?
在运行vscode驱动的测试时,将环境变量放入设置中。json而不是launch。json对我有用:
{
"java.configuration.updateBuildConfiguration": "automatic",
"java.test.config": [
{
"workingDirectory": "${workspaceFolder}",
"env": {
"STAGE_ENV": "DEV",
"AWS_REGION": "us-west-2"
}
}
]
}
然而:maven测试并没有从中解读。我可以通过在pom中的以下位置添加变量来运行maven测试:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
</plugin>
<plugin>
<!-- run unit tests -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<environmentVariables>
<!-- add them here -->
<STAGE_ENV>DEV</AWS_ACCESS_KEY>
<AWS_REGION>us-west-2</AWS_REGION>
<!-- -->
</environmentVariables>
</configuration>
</plugin>
</plugins>
</build>
我还没有找到一个好的解决方案来使用单个. env文件来支持这两种情况。
在SpringBoot中读取环境变量的最佳方法是什么? 在Java中,我使用了以下方法: 是否可以使用注释来实现?
在Jenkins中,我试图设置一个动态环境变量。 我使用Scriptler创建了一个Groovy脚本并将结果写入文件。 然后,我使用EnvInject来读取该文件的内容。 Groovy脚本: 设置: 但是,我想要设置的环境变量仍然无法识别: 知道为什么无法识别环境变量吗?
一个朋友让我为他们做一个minecraft插件,所以我需要安装Maven。我已经按照教程的指示安装了以下用户变量。 > java_home--值:C:\program files\java\jdk1.8.0\bin windows 7 maven 2安装 当我尝试在命令Propmpt中设置它时,它会响应我,说。如何成功运行? 谢谢你的阅读。 另外,这是我的系统路径变量值:有什么问题吗?
5.3.1 $%envVarName% 当编译时,$%envVarName% 将会被环境变量 envVarName 替换。
问题内容: 有没有办法在Node.js代码中读取环境变量? 例如Python的。 问题答案: process.env.ENV_VARIABLE 您要访问的变量的名称在哪里。
问题内容: 对于Windows 7,我已经安装了32位和64位版本的JDK。所有四个安装的版本均为8,更新为20。 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 当我下载并解压缩elasticsearch并运行/bin/service.bat或/bin/elasticsearc