如何在运行时更改 build.gradle 中的 mainClassName?

How can I change mainClassName in build.gradle during runtime?

我将 gradle 用于我在 java 中实现的多人游戏。

在项目中,我有两个 类 名为 Server 和 Client,我希望能够在 运行 时间内选择哪个给 运行。有什么办法可以通过在命令行中为 gradle 任务提供参数来做到这一点?例如,我想使用类似 ./gradlew run -server 到 运行 Server.java 和 ./gradlew run -client 到 运行 Client.java.

现在我在build.gradle中有这个:

plugins {
    id 'java'
    id 'application'
}


application {
    mainClassName = 'server.Server'
    mainModule = 'treasurehunt.main'
}

java {
    modularity.inferModulePath = true
}

repositories {
        mavenCentral()
}

这是我第一次使用gradle,如果您能详细解释一下,我将不胜感激。谢谢!

你不能; Main-Class 属性被“烘焙”到 jar 中。你可以做的是用 main 方法编写一个小型启动器 class,该方法读取命令行并调用 Server.mainClient.main.