我有一个带有默认变量值的application.properties文件。我希望能够在使用mvn spring-boot:run
时更改其中一个。我找到了如何更改整个文件,但我只想更改其中一个或两个属性。
答案 0 :(得分:47)
您可以将各个属性作为命令行参数传递。例如,如果要设置server.port
,则可以在启动可执行jar时执行以下操作:
java -jar your-app.jar --server.port=8081
或者,如果您正在使用mvn spring-boot:run
:
mvn spring-boot:run -Drun.arguments="--server.port=8081"
您还可以在应用程序的spring-boot:run
中配置pom.xml
的参数,这样就不必每次都在命令行中指定它们:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<arguments>
<argument>--server.port=8085</argument>
</arguments>
</configuration>
</plugin>
答案 1 :(得分:10)
快速更新:
如果您使用的是最新版本的spring-boot 2.X和maven 3.X,则以下命令行将覆盖您的服务器端口:
java -jar -Dserver.port=9999 your_jar_file.jar
答案 2 :(得分:6)
要进行一些更新,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插件配置以及从胖罐传递参数的方式,它没有改变。
因此,非常好的安迪·威尔金森答案仍然正确。
答案 3 :(得分:1)
如果不使用逗号,要在多种模式下覆盖某些自定义属性或spring boot属性,请使用空格代替逗号,例如下面的代码:
mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8899 --your.custom.property=custom"
答案 4 :(得分:0)
在Spring Boot中,我们提供了覆盖以下属性的条件
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8082
答案 5 :(得分:0)
您可以设置环境变量来覆盖属性。例如,您有一个属性名称test.props=1
。如果您有环境变量TEST_PROPS
,则Spring Boot会自动覆盖它。
export TEST_PROPS=2
mvn spring-boot:run
您还可以使用所需的所有属性创建一个json字符串,并使用-Dspring.application.json
传递它,或使用SPRING_APPLICATION_JSON
导出json。
mvn spring-boot:run -Dspring.application.json='{"test.props":"2"}'
或者仅通过-Dtest.props = 2传递属性
mvn spring-boot:run -Dtest.props=2
在Spring Boot 2.1.17
和maven 3.6.3
上进行了测试