【问题标题】:How to run two different Main Classes with a Gradle task如何使用 Gradle 任务运行两个不同的主类
【发布时间】:2020-07-02 10:09:00
【问题描述】:

我是 gradle 的新手,不熟悉 Groovy 语言/构建脚本语法等。

我有一个主类,它的开头非常好

gradle run

但我现在想创建一个新的任务(uitest),应该用类似的东西来调用它:

gradle -q uitest

应该像上面那样运行,但是使用另一个 mainClass。

到目前为止,我的构建脚本如下所示:

plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.8'

}
mainClassName = 'streetsim.ui.StreetSimApp'

javafx {
    version = "11.0.2"
    modules = ['javafx.controls', 'javafx.fxml']
}

task uitest(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath
    main = 'streetsim.ui.TemporaryUITestPool.main'
}

group 'groupname'
version '1.0-SNAPSHOT'


sourceCompatibility = 11

repositories {
    jcenter()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0'
}


test {
    useJUnitPlatform()
}

编辑: 我将任务更改如下:

task uitest(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath
    main = 'streetsim.ui.TemporaryUITestPool'
}

现在我收到以下错误:

Error: JavaFX runtime components are missing, and are required to run this application

正如下面另一个答案的评论中提到的,如果可能,我不想添加 VM 参数,因为我不想需要本地 JavaFX 安装

【问题讨论】:

  • JavaExec 中的 main 属性应该是类的完全限定名称,就像您为 mainClassName 所做的那样。因此,请尝试删除 .main 部分,因为我认为这只是方法名称。如果它不起作用,请发布错误消息。
  • 刚刚编辑了我的帖子。 @BjørnVester

标签: java gradle javafx


【解决方案1】:

因为需要下面的这个 FX,所以您需要将以下内容添加到 java 命令中(并根据上面的评论删除 .main)

--add-modules javafx.controls,javafx.fxml --module-path <path_to_modules>

【讨论】:

  • 是的,不完全是。我使用 javafx-plugin,所以我不需要设置本地 JavaFX 模块安装的路径。尽管任务 uitest 中缺少 JavaFX 运行时组件。通过正常的 gradle 运行,它也可以在不添加这些 VM args 的情况下工作。我希望它在我自己的任务中以同样的方式工作
  • java fx 插件具有添加相同的自定义任务 - 但您的任务是简单的 JavaExec - 因此它无法继承自定义设置,如果您运行 gradle run --debug 和gradle uitest --debug 你会看到差异---运行它会显示如下 2020-07-02T11:34:37.792+0100 [INFO] [org.gradle.process.internal.DefaultExecHandle] 启动进程命令:/库/Java/JavaVirtualMachines/jdk-11.0.6.jdk/Contents/Home/bin/java --add-modules javafx.controls,javafx.fxml --module-path /Users/user/.gradle//javafx-fxml -14-mac.jar:....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-19
  • 1970-01-01
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
相关资源
最近更新 更多