当前位置: 首页 > 知识库问答 >
问题:

Gradle编译和jar:java类的子集

席宜修
2023-03-14

我想编译(使用不同的目标兼容性和源代码兼容性)并jar整个主/ src / java文件夹的一小部分。

所以我有e. g.

main/src/java/com/interface/A.java
main/src/java/com/interface/B.java
main/src/java/com/logic/C.java

我想将A和B编译成jar“project name _ project version _ interface . jar ”,并使用不同的编译器版本。

这可能吗?我该怎么做?

谢谢

共有1个答案

太叔超英
2023-03-14

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

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 构建语言参考。

 类似资料:
  • 我正在做从 Gradle 1.6 迁移到 2.1 的 POC 工作(基本上是为了解决这个问题:Gradle 构建/测试失败 - kryo。Kryo例外:缓冲区溢出)。 Gradle构建在Gradle 1.6上成功运行 在Gradle 2.1中,当我运行“Gradle clean build”时,会收到以下错误消息。 和 全局级别init.d/extra1...常见的gradle文件行是:我使用了相

  • 我有一个gradle 4.1多项目,其中包含一个包含2个子文件夹“api”和“实现”的“项目A”。 多项目使用在主build.gradle的子项目部分中定义的< code>kotlin和< code>java-library插件。实现项目具有对< code>:projectA:api的API依赖性 在api文件夹中,我在“src/main/java”中有kotlin和java文件,在实现项目中,我

  • 我正在使用mongodb和Spring Boot。最近,我的mongodb升级到了3.0版本。 我对Spring使用以下Gradle依赖项: 如果我查看maven存储库中的gradle:,我会看到以下内容(http://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb/1.2.6

  • 我有一个用Java和Gradle编码的不和谐bot,我需要找到如何使它工作。我问机器人的主人,他回答我:“./Gradlew Shadowjar”这是什么意思?我需要做什么才能让机器人正常工作? 我已经尝试过用jar编译java文件,我尝试过创建一个清单,但我不能创建类。 ->无效,错误:包ch.qos.logback.classic不存在 ->创建了一个不执行任何操作的.jar文件 ->不知道这

  • 前面几节我们学习了 Gradle 的任务及命令,通过这几节的学习我们已经有了一定的 Gradle 基础,今天我们就来学习一下如何自定义一款 Gradle 插件。我们为什么要自定义 Gradle 插件呢?那当然是为了我们开发方便呀。如果吃力不讨好谁会去做呢。下面我们进入正题。 Gradle 插件主要分为两类:脚本插件和对象插件。下面我们来看下它们的区别。 1. 脚本插件 脚本插件就是我们在.grad

  • 我需要创建Gradle任务,它可以在Gradle构建之前替换.java文件。分级在.war文件中构建包应用程序。我需要在构建后替换字节码。我试过sourceSets Gradle任务,但它只能排除文件。 但我需要在同一地方也包括文件。我怎么能和Gradle在一起?