如何在 Gradle 中为 JavaExec 任务设置主类路径?

ace*_*azz 3 classpath gradle

我知道如果我想从 Main 类运行 main,通过使用sourceSets.main.runtimeClasspath类路径,我必须将 Main 类放在里面src/main/java并使用类似的东西:

apply plugin: 'java'

dependencies {

}

task myTask (type: JavaExec){
    dependsOn classes
    classpath sourceSets.main.runtimeClasspath
    main = 'Main'
}
Run Code Online (Sandbox Code Playgroud)

我想要的是了解如何指定不同的类路径,从中检索包含 main() 的类。如果我想从不在 src/main/java 中但与build.gradle.

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

Cra*_*ing 5

由于您仍然需要编译此类类,并且在该类不在标准src/main/java目录中的情况下,您将需要定义SourceSet该路径的其他内容并使用与您描述的相同的方法

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

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