我有一application.properties带有默认变量值的www.example.com文件。我希望在运行mvn spring-boot:run时能够更改其中的一个变量值。我找到了如何更改整个文件,但我只想更改其中的一两个属性。
mvn spring-boot:run
hfyxw5xn1#
您可以将单个属性作为命令行参数传入。例如,如果您希望设置server.port,则可以在启动可执行jar时执行以下操作:
server.port
java -jar your-app.jar --server.port=8081
或者,如果您使用的是带有Sping Boot 2.x的mvn spring-boot:run:
mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8081"
或者,如果您使用的是Sping Boot 1.x:
mvn spring-boot:run -Drun.arguments="--server.port=8081"
您还可以在应用程序的pom.xml中配置spring-boot:run的参数,这样就不必每次都在命令行中指定它们:
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>
kq4fsx7k2#
为了更新一些东西,Sping Boot 1.X Maven插件依赖于--Drun.arguments Maven用户属性,而Spring Boot 2.X Maven插件依赖于-Dspring-boot.run.arguments Maven用户属性。因此,对于Spring 2,您需要执行以下操作:
--Drun.arguments
-Dspring-boot.run.arguments
如果你需要传递多个参数,你必须使用,作为分隔符,并且在参数之间不要使用空格:
,
mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8081,--foo=bar"
关于maven插件的配置和从fat jar传递参数的方式,它没有改变。所以安迪·威尔金森的回答仍然是正确的。
n3h0vuf23#
快速更新:如果您使用的是最新版本的spring-boot 2. X和maven 3. X,则以下命令行将覆盖您的服务器矶钓:
java -jar -Dserver.port=9999 your_jar_file.jar
z4bn682m4#
您可以设定环境变量来覆写属性。例如,您有一个属性名称test.props=1。如果您有环境变量TEST_PROPS,spring Boot 会自动覆写它。
test.props=1
TEST_PROPS
export TEST_PROPS=2 mvn spring-boot:run
您还可以创建一个json字符串,其中包含所有需要覆盖的属性,并使用-Dspring.application.json传递它,或者使用SPRING_APPLICATION_JSON导出json。
-Dspring.application.json
SPRING_APPLICATION_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上进行测试
2.1.17
3.6.3
7vhp5slm5#
如果不使用逗号,要在多模式下覆盖一些自定义属性或 Spring Boot 属性,请使用空格代替逗号,如下所示代码:
mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8899 --your.custom.property=custom"
2cmtqfgy6#
在Sping Boot 中,我们提供了如下覆盖属性mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8082
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8082
2fjabf4q7#
分级跑步:*在默认端口(8080)中运行:./gradlew bootRun*在提供的端口(8888)中运行:./gradlew bootRun --args='--server.port=8888'
./gradlew bootRun
./gradlew bootRun --args='--server.port=8888'
application.properties
PORT
PORT=8888 ./gradlew bootRun
mvnw spring-boot:run
mvnw spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=8085'
mvn spring-boot:run -Dspring-boot.run.arguments='--server.port=8085'
SERVER_PORT=9093 mvn spring-boot:run
java -jar
./gradlew clean build
build/libs/
mvn clean install
target
java -jar myApplication. jar
java -jar myApplication.jar --port=8888
java -jar -Dserver.port=8888 myApplication.jar
SERVER_PORT
SERVER_PORT=8888 java -jar target/myApplication.jar
2ul0zpep8#
如果您在执行mvn全新安装后拥有jar文件,则可以使用双-覆盖应用程序.yml中的任何属性,如下所示:
java -jar name_of_your_jar_file.jar --parameter=value
例如,如果在启动服务器时需要更改服务器端口,则可以编写以下代码:
java -jar name_of_your_jar_file.jar --server.port=8888
emeijp439#
我在命令行命令的语法上犯了一个错误,在传递命令行参数时,我在““之间 Package 了多个参数,这就是问题所在。我只是运行了同一个命令,其中有多个参数,由空格分隔,而没有在“”之间 Package 它们,它工作得很好。
9条答案
按热度按时间hfyxw5xn1#
您可以将单个属性作为命令行参数传入。例如,如果您希望设置
server.port
,则可以在启动可执行jar时执行以下操作:或者,如果您使用的是带有Sping Boot 2.x的
mvn spring-boot:run
:或者,如果您使用的是Sping Boot 1.x:
您还可以在应用程序的
pom.xml
中配置spring-boot:run
的参数,这样就不必每次都在命令行中指定它们:kq4fsx7k2#
为了更新一些东西,Sping Boot 1.X Maven插件依赖于
--Drun.arguments
Maven用户属性,而Spring Boot 2.X Maven插件依赖于-Dspring-boot.run.arguments
Maven用户属性。因此,对于Spring 2,您需要执行以下操作:
如果你需要传递多个参数,你必须使用
,
作为分隔符,并且在参数之间不要使用空格:关于maven插件的配置和从fat jar传递参数的方式,它没有改变。
所以安迪·威尔金森的回答仍然是正确的。
n3h0vuf23#
快速更新:
如果您使用的是最新版本的spring-boot 2. X和maven 3. X,则以下命令行将覆盖您的服务器矶钓:
z4bn682m4#
您可以设定环境变量来覆写属性。例如,您有一个属性名称
test.props=1
。如果您有环境变量TEST_PROPS
,spring Boot 会自动覆写它。您还可以创建一个json字符串,其中包含所有需要覆盖的属性,并使用
-Dspring.application.json
传递它,或者使用SPRING_APPLICATION_JSON
导出json。或者直接用-Dtest.props=2传递属性
在 Spring Boot
2.1.17
和maven3.6.3
上进行测试7vhp5slm5#
如果不使用逗号,要在多模式下覆盖一些自定义属性或 Spring Boot 属性,请使用空格代替逗号,如下所示代码:
2cmtqfgy6#
在Sping Boot 中,我们提供了如下覆盖属性
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8082
2fjabf4q7#
分级跑步:
*在默认端口(8080)中运行:
./gradlew bootRun
*在提供的端口(8888)中运行:
./gradlew bootRun --args='--server.port=8888'
application.properties
文件中有任何名为PORT
的变量,请运行以下命令:PORT=8888 ./gradlew bootRun
由Maven运行:
*在默认端口(8080)中运行:
mvnw spring-boot:run
*在提供的端口(8888)中运行:
mvnw spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=8085'
*在提供的端口(8888)中运行:
mvn spring-boot:run -Dspring-boot.run.arguments='--server.port=8085'
*使用其他自定义属性在提供的端口(8888)中运行:
mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8899 --your.custom.property=custom"
application.properties
文件中有任何名为PORT
的变量,请运行以下命令:SERVER_PORT=9093 mvn spring-boot:run
个使用
java -jar
:*创建.jar文件:
./gradlew clean build
。我们将在其中找到jar文件:build/libs/
文件夹。mvn clean install
。我们将在其中找到jar文件:target
文件夹。*在默认端口(8080)中运行:
java -jar myApplication. jar
*在提供的端口(8888)中运行:
java -jar myApplication.jar --port=8888
*在提供的端口(8888)中运行:
java -jar -Dserver.port=8888 myApplication.jar
*在提供的端口(8888)中运行,该端口在www.example.com文件中具有变量
SERVER_PORT
application.properties:SERVER_PORT=8888 java -jar target/myApplication.jar
2ul0zpep8#
如果您在执行mvn全新安装后拥有jar文件,则可以使用双-覆盖应用程序.yml中的任何属性,如下所示:
例如,如果在启动服务器时需要更改服务器端口,则可以编写以下代码:
emeijp439#
我在命令行命令的语法上犯了一个错误,在传递命令行参数时,我在““之间 Package 了多个参数,这就是问题所在。我只是运行了同一个命令,其中有多个参数,由空格分隔,而没有在“”之间 Package 它们,它工作得很好。
正确的命令:Java -jar我的jar. jar--com.arg1=10 --com.arg2=1
**不正确的命令:“--com.arg1=10 --com.arg2=1”**请输入您的密码。