我正在尝试使用 gradle 构建一个基本的多项目,如 Structuring Projects with Gradle
中的建议项目结构如下:
测试子项目中的Main.java如下:
package org.example;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
根项目下的setting.gradle.kts
如下:
rootProject.name = "GradleTest"
include("test")
build.gradle.kts
看起来像这样:
plugins {
id("java")
id("application")
}
application {
var mainClass = "org.example.Main"
}
group = "org.example"
repositories {
mavenCentral()
}
dependencies {
testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1")
}
tasks.getByName<Test>("test") {
useJUnitPlatform()
}
当我尝试在根项目下运行
./gradlew run
时,出现以下错误:
> Task :test:run FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test:run'.
> No main class specified and classpath is not an executable jar.
* Try:
> Run with --stacktrace option to get the stack trace.
有人可以建议我在这里缺少什么吗?
谢谢
此问题已解决。出现差异的原因是我遵循当前版本的 Gradle (
8.7
) 的文档,而我的 Gradle 版本是 7.5
。事实证明,两个版本之间在 build.gradle.kts 中定义主类的方式存在显着差异。
所以根据
gradle 7.5
的文档 mainClass 应该这样定义:
application {
mainClass.set("org.example.Main")
}