【发布时间】: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