gradle - 如何在Gradle中设置JavaExec任务的主类类路径?

标签 gradle classpath

我知道,如果我想从 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'
}

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

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

最佳答案

由于您仍然需要编译此类,并且该类不在标准 src/main/java 目录中,您将需要定义额外的 SourceSet 到该路径并使用与您描述的相同的方法:

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

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

关于gradle - 如何在Gradle中设置JavaExec任务的主类类路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39063659/

相关文章:

android-studio - 以编程方式将库添加到 Android Studio 中的 gradle 文件

java - 即使库位于 PATH 和 CLASSPATH 中,也会出现 NoClassDefFoundError

java - Eclipse:如何使用外部 jar 构建可执行 jar?

java - 如何在 Equinox 中定义类路径目录?

android - 如何在不重复自己的情况下在子项目中拥有相同的依赖关系?

android - 签名 APK 构建失败重新 :play-services-ads-identifier. 属性冲突

gradle - 是否可以只为失败生成 JUnit 报告

java - 如何在仅给出 jar 文件名的情况下获取 jar 文件在类路径中的绝对路径?

java - 如何在外部文件夹中为 tomcat 中的 Web 应用程序配置 log4j.properties

java - 使用 Docker 运行 Gradle IntegrationTest 任务时如何修复 ':integrationTest NO-SOURCE'