Spring:从命令行覆盖一个application.property

新手上路,请多包涵

我有一个带有默认变量值的 application.properties 文件。我希望能够在运行时更改其中一个 mvn spring-boot:run 。我找到了如何更改整个文件,但我只想更改其中的一个或两个属性。

原文由 clueless user 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 840
2 个回答

您可以将单个属性作为命令行参数传递。例如,如果您想设置 server.port ,您可以在启动可执行 jar 时执行以下操作:

 java -jar your-app.jar --server.port=8081

或者,如果您将 mvn spring-boot:run 与 Spring boot 2.x 一起使用:

 mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8081"

或者,如果您使用的是 Spring Boot 1.x:

 mvn spring-boot:run -Drun.arguments="--server.port=8081"

您还可以在应用程序的 pom.xml --- 中为 spring-boot:run 配置参数,这样就不必每次都在命令行中指定它们:

 <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <arguments>
            <argument>--server.port=8085</argument>
        </arguments>
    </configuration>
</plugin>

原文由 Andy Wilkinson 发布,翻译遵循 CC BY-SA 4.0 许可协议

要更新一些东西,Spring Boot 1.X Maven 插件依赖于 --Drun.arguments Maven 用户属性,但 Spring Boot 2.X Maven 插件依赖于 -Dspring-boot.run.arguments Maven 用户属性。

所以对于 Spring 2,你需要做:

 mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8081"

如果你需要传递多个参数,你必须使用 , 作为分隔符并且永远不要在参数之间使用空格:

 mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8081,--foo=bar"

关于 maven 插件配置和从 fat jar 传递参数的方式,它没有改变。

所以很好的安迪威尔金森答案仍然是正确的。

原文由 davidxxx 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题