从 Gradle 引导传递动态端口:运行应用程序
Posted
技术标签:
【中文标题】从 Gradle 引导传递动态端口:运行应用程序【英文标题】:Pass Dynamic Port from Gradle boot:run of an application 【发布时间】:2019-04-20 11:01:08 【问题描述】:我有一个应用程序,它现在在某个端口(ex-8080)上运行,当我使用 gradlew 启动这个应用程序时,我想传递动态端口来启动应用程序?
./gradlew :testApplication:bootRun
这里有没有办法通过动态端口??
【问题讨论】:
How to change the port of a Spring Boot application using Gradle?的可能重复 【参考方案1】:将以下内容添加到build.gradle
,以便我们可以将参数传递给gradlew
,以及底层的java
命令:
bootRun
if (project.hasProperty('args'))
args project.args.split(',')
将您通常发送给java
命令的参数(在这种情况下,覆盖server.port
)作为-Pargs
传递给gradlew
:
/gradlew :testApplication:bootRun -Pargs="--server.port=8081"
这里有什么:
当您使用参数--server.port=8081
运行 java 时,Spring Boot 将覆盖默认属性(例如,Spring Boot 将忽略您在属性文件中的端口,它将使用命令行中的值
-Pargs
是向 bootRun 询问命令行参数的方式。查看详情here。
另请参阅same question for maven。
【讨论】:
感谢您的信息,-Pargs 没有考虑,我添加了以下内容并开始工作。 bootRun systemProperties = System.properties 然后通过 -Dserver.port=8081 并开始工作。我还有一个问题,我可以通过在 gradlew bootRun 中传递参数来修改 application.properties 中指定的自定义值吗? application.properties 中的示例有一个变量调用 test.url="http:localhost:8081" 现在我正在运行 gradlew :testApplication:bootRun 在这里我想修改 test.url 的内容,这可能吗?【参考方案2】:我无法直接通过端口。
但如果您想要解决方法,请执行以下操作:
使用gradle build
构建应用程序。
在您的项目中导航并打开目录build/libs
现在您必须查看项目的 jar,然后运行此命令 java -jar yourJarProject.jar --server.port=8081
。
【讨论】:
以上是关于从 Gradle 引导传递动态端口:运行应用程序的主要内容,如果未能解决你的问题,请参考以下文章
通过 Gradle 运行 Java 类时传递系统属性和参数的问题
通过 Gradle 运行 Java 类时传递系统属性和参数的问题