Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring:从命令行重写一个application.property_Java_Spring_Spring Boot - Fatal编程技术网

Java Spring:从命令行重写一个application.property

Java Spring:从命令行重写一个application.property,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个带有默认变量值的application.properties文件。我希望能够在使用mvn spring boot:run运行时更改其中一个。我找到了如何更改整个文件,但我只想更改其中一个或两个属性 您可以将各个属性作为命令行参数传入。例如,如果要设置server.port,则可以在启动可执行jar时执行以下操作: java -jar your-app.jar --server.port=8081 或者,如果您使用的是mvn spring boot:runwith spring boot

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

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

java -jar your-app.jar --server.port=8081
或者,如果您使用的是
mvn spring boot:run
with 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>

org.springframework.boot
springbootmaven插件
--server.port=8085

更新一点,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插件配置和从胖jar传递参数的方式,它没有改变。

所以安迪·威尔金森的回答仍然是正确的

在Spring Boot中,我们有如下覆盖属性的规定


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

如果不使用逗号,要在多模式下覆盖某些自定义属性或spring boot属性,请使用空格而不是逗号,如下代码所示:

mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8899 --your.custom.property=custom"
快速更新:

如果您使用的是最新版本的spring boot 2.X和maven 3.X,下面的命令行将覆盖您的服务器端口:

java -jar -Dserver.port=9999   your_jar_file.jar

您可以设置一个环境变量来覆盖属性。例如,您有一个属性名
test.props=1
。如果您有一个环境变量
TEST\u PROPS
spring boot将自动覆盖它

export TEST_PROPS=2
mvn spring-boot:run
您还可以创建一个json字符串,其中包含需要重写的所有属性,并使用
-Dspring.application.json
传递该字符串,或者使用
SPRING\u application\u 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

@yuli上进行了测试,我编辑了您的问题,并用一些选项更新了我的答案,以便您在使用
mvn spring boot:run
I get
org.kohsuke.args4j.CmdLineException:“--server.port=8181”不是有效选项
spring boot不使用args4j,所以失败一定来自你的代码注释:1。参数应以逗号分隔2。每个参数的前缀应为--eg.-Dspring boot.run.arguments=“--server.port=8081,--customArgument=custom”如果该参数是application.properties(如myValue)中的自定义参数,它还会工作吗?酷!。诸如-Dproperty1=value1-Dproperty2=value2之类的系统属性也可以通过mvn spring引导在命令行上传递:run-Dspring boot.run.arguments=“--property1=value1,-property2=value2”不适用于我。如果我输入一个空格,应用程序将不会检测到参数,如果我输入一个空格,SDK将不会读取它。仍然在寻找如何添加application.properties args。他们到底为什么要把它改成这种语法-D