naz*_*art 2 yaml environment-variables maven spring-boot
我正在使用 Spring Boot 3.2.1。
我不想将敏感数据作为application.yml. 所以他们指的是环境变量。
在应用程序的 IntelliJ 配置设置(在Environment variables部分)中执行工作正常。
但是,从控制台执行 Maven 失败:
./mvnw -Ddemo-api-key=all56 -Ddemo-host=https://demo.api spring-boot:run
Run Code Online (Sandbox Code Playgroud)
以下是异常详情:
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]
Run Code Online (Sandbox Code Playgroud)
这是来自的片段application.yml:
car-parks-url: ${demo-host}/cap-ws/getCarParks?apiKey=${demo-api-key}
Run Code Online (Sandbox Code Playgroud)
如果我将它放在更高的位置,application.yml它可以正常工作:
demo-api-key: all56
demo-host: https://demo.api
Run Code Online (Sandbox Code Playgroud)
URL 格式正确,所有数据都被正确提取。
无法理解将它作为环境变量传递给 maven 会错过什么?
小智 5
它不同于:
java -jar -Ddemo-api-key=all56 -Ddemo-host=https://demo.api myApp.jar
Run Code Online (Sandbox Code Playgroud)
将 env vars直接传递给应用程序的地方。
如果你这样做:
./mvnw -Ddemo-api-key=all56 \
-Ddemo-host=https://demo.api spring-boot:run
Run Code Online (Sandbox Code Playgroud)
您将 vars 传递给maven 任务而不是应用程序。
你可以使用:
./mvnw spring-boot:run \
-Dspring-boot.run.arguments="--demo-host=https://demo.api --demo-api-key=all56"
Run Code Online (Sandbox Code Playgroud)
或者
./mvnw spring-boot:run -Dspring-boot.run.jvmArguments="\
-Ddemo-host=https://demo.api -Ddemo-api-key=all56"
Run Code Online (Sandbox Code Playgroud)
这些命令指示您将这些变量传递给 Spring Boot 应用程序的内容。
附加资源:
| 归档时间: |
|
| 查看次数: |
2863 次 |
| 最近记录: |