如何在 Gradle 中设置 JavaExec 任务的主要 class class 路径?

How to set the main class classpath for JavaExec task in Gradle?

我明白了,如果我想 运行 从主 class 到主 class,通过使用 sourceSets.main.runtimeClasspath class 路径,我必须将主 class 在 src/main/java 里面并使用类似的东西:

apply plugin: 'java'

dependencies {

}

task myTask (type: JavaExec){
    dependsOn classes
    classpath sourceSets.main.runtimeClasspath
    main = 'Main'
}

我想要的是了解如何指定不同的 class 路径,从中检索包含 main() 的 class。 如果我想 运行 来自不在 src/main/java 但与 build.gradle 相同的文件夹中的 class 怎么办?

我知道做那样的事情没有意义,但我希望找到一个解决方案作为练习来学习Gradle。

因为你仍然需要编译这样的 class 并且在 class 不在标准 src/main/java 目录中的情况下,你将需要定义额外的SourceSet 到该路径并使用与您描述的相同的方法:

sourceSets {
    main {
        custom {
            srcDirs = ['custom/path']
        }
    }
}

task myTask (type: JavaExec){
    dependsOn classes
    classpath sourceSets.custom.runtimeClasspath
    main = 'Main'
}