从 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 类时传递系统属性和参数的问题

WiX - 将参数从 MSI 传递到 Xeam 引导程序应用程序

从 Gradle 将系统属性传递到 Spring Boot

如何将参数从 gradle exec 任务传递到命令行