我正在使用Spring Boot isNotHeader
。
我不想将敏感数据作为True
放在配置文件中。所以他们指的是环境变量。
在应用程序的IntelliJ配置设置(在3.2.1
部分)上,执行工作正常。
但是,它无法从控制台执行maven:
application.yml
以下是异常详细信息:
Environment variables
这是./mvnw -Ddemo-api-key=all56 -Ddemo-host=https://demo.api spring-boot:run
的摘录:
java.lang.IllegalArgumentException: Not enough variable values available to expand 'demo-host'
at org.springframework.web.util.UriComponents$VarArgsTemplateVariables.getValue(UriComponents.java:367) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.util.UriComponents.expandUriComponent(UriComponents.java:262) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.util.HierarchicalUriComponents$PathSegmentComponent.expand(HierarchicalUriComponents.java:960) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.util.HierarchicalUriComponents.expandInternal(HierarchicalUriComponents.java:434) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.util.HierarchicalUriComponents.expandInternal(HierarchicalUriComponents.java:52) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
at org.springframework.web.util.UriComponents.expand(UriComponents.java:172) ~[spring-web-5.2.7.RELEASE.jar:5.2.7.RELEASE]
如果我将其放在application.yml
的较高位置,则效果很好:
car-parks-url: ${demo-host}/cap-ws/getCarParks?apiKey=${demo-api-key}
URL格式正确,并且所有数据都被正确提取。
无法理解使用maven将其作为环境变量传递时遗漏了什么?
答案 0 :(得分:2)
与以下不同:
java -jar -Ddemo-api-key=all56 -Ddemo-host=https://demo.api myApp.jar
要将环境变量 直接传递到应用程序的地方 。
如果您这样做:
./mvnw -Ddemo-api-key=all56 \
-Ddemo-host=https://demo.api spring-boot:run
您要将变量传递给 maven任务而不是应用程序 。
您可以使用:
./mvnw spring-boot:run \
-Dspring-boot.run.arguments="--demo-host=https://demo.api --demo-api-key=all56"
或
./mvnw spring-boot:run -Dspring-boot.run.jvmArguments="\
-Ddemo-host=https://demo.api -Ddemo-api-key=all56"
这些命令指示您如何将这些var传递给Spring Boot应用程序。
其他资源: