Gradle编译并jar一部分java类

时间:2013-12-10 07:49:59

标签: 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_projectversion_interface.jar”并使用不同的编译器版本。

这可能吗?我怎样才能做到这一点?

由于

1 个答案:

答案 0 :(得分:4)

我建议使用单独的源集:

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详细信息,请查看Gradle Build Language Reference