【发布时间】:2020-09-18 23:35:29
【问题描述】:
我想从application.properties 运行两个 Amazon S3 的 SDK 信息,但我不想将其放入文件中,而是想在运行 ./mvnw spring-boot:run 时添加它们。我看到可以这样做:
./mvnw spring-boot:run -Dspring-boot.run.arguments="--srp.storage.s3.access-key=FOOBARFOOBAR,--srp.storage.s3.secret-key=foobarfoobarfoobarfoobarfoobar"
我尝试运行上面的命令,并在参数周围加上引号,并且它们之间有/没有空格。此外,我尝试在属性文件中保留空白值以及完全删除它们。
# srp.storage.s3.access-key=
# srp.storage.s3.secret-key=
srp.storage.s3.access-key=
srp.storage.s3.secret-key=
我有一个用@ConfigurationProperties("srp.storage") 注释的类。这些尝试的结果各不相同,从应用程序由于类未找到属性而无法启动,到实际运行但没有效果。导致服务器无法启动的命令变体未在 application.properties 中指定任何属性,并尝试运行带有和不带引号且不带空格的命令。它运行但没有生效的场景是放置空格。
我知道使用已构建的 JAR 文件运行它,但如果可能的话,我希望能够像这样运行它,以防止每次更改某些内容时都构建它。
还尝试指定此处所示的占位符,但同样没有成功。我什至可以使用./mvnw 做我想做的事吗?还是必须使用 JAR 文件?
srp.storage.s3.access-key=${access-key}
srp.storage.s3.secret-key=${secret-key}
./mvnw spring-boot:run -Dspring-boot.run.arguments="--access-key=FOOBARFOOBAR,--secret-key=foobarfoobarfoobarfoobarfoobar"
【问题讨论】:
-
我认为
-D会解决您的问题,如果您从命令行运行它,例如:./mvnw spring-boot:run -Dspring-boot.run.arguments=FOOBARFOOBAR -Dsrp.storage.s3.access-key=something -D srp.storage.s3.secret-key=whatever。 -
抱歉,没有解决。另外,我不明白我会传递给
-Dspring-boot.run.arguments什么? “FOOBARFOOBAR”是 AWS SDK 所需的密钥之一,因此它将被传递给“access-key”。我确实尝试过使用这种语法,但没有运气。 -
我在编辑的时候看到了,我在这里粘贴的时候搞砸了。我修好了。
-
使用环境变量解决。这对我来说已经足够了。
-
祝你好运,.....
标签: java spring spring-boot command-line-arguments application.properties