Gradle编译并jar java类的子集

Gradle编译并jar java类的子集,gradle,Gradle,我想编译(使用不同的targetCompatibility和sourceCompatibility)和jar整个main/src/java文件夹的一小部分 所以我有 main/src/java/com/interface/A.java main/src/java/com/interface/B.java main/src/java/com/logic/C.java 我想将A和B编译成一个jar“projectname\u projectversion\u interface.jar”,并使用不

我想编译(使用不同的targetCompatibility和sourceCompatibility)和jar整个main/src/java文件夹的一小部分

所以我有

main/src/java/com/interface/A.java
main/src/java/com/interface/B.java
main/src/java/com/logic/C.java
我想将A和B编译成一个jar“projectname\u projectversion\u interface.jar”,并使用不同的编译器版本

这可能吗?我该怎么做


谢谢

我建议使用单独的源代码集:

apply plugin: "java"

sourceSets {
    main {
        java {
            exclude "com/interface/A.java"
            exclude "com/interface/B.java"
        }
    }
    api {
        java {
            srcDir "src/main/java"
            include "com/interface/A.java"
            include "com/interface/B.java"
        }
    }
}
如果
main
依赖于
api
,则添加如下内容:

sourceSets.main.compileClasspath += sourceSets.api.output
可以在编译任务级别上调整源/目标兼容性:

compileApiJava {
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}
要使用不同于运行Gradle本身的JDK的编译器,必须设置编译器可执行文件:

compileApiJava {
    options.fork = true
    options.forkOptions.executable = "/path/to/compiler/executable"
}
这可能会在某种程度上降低构建速度


有关进一步的API详细信息,请查看。

我添加了以下内容:任务jarApi(类型:Jar){dependsOn compileApiJava from sourceset.API.output分类器='API'}任务sourcesApiJar(类型:Jar,dependsOn:apiClasses){classifier='API sourceset.API.allSource}正确,我忘了不是为每个源代码集自动添加Jar任务。