gpt4 book ai didi

gradle - 编译具有不同Java源兼容性的项目

转载 作者:行者123 更新时间:2023-12-04 13:40:24 26 4
gpt4 key购买 nike

我有3个不同项目的多项目配置。

其中两个项目取决于第三个项目,我将其命名为“核心”。
根据项目的不同,“核心”必须编译为jar,并将源兼容性分别为1.4和1.6编译为输出core-1.4.jar和core-1.6.jar。

是否可以使用单个build.gradle来完成此操作,或者最好的方法是什么?如何为2个项目中的每一个特别指定依赖项中的哪个jar?

最佳答案

从根本上讲,问题在于如何产生和使用基于相同Java代码的工件的两种变体。假设您确实需要产生两个仅在目标兼容性方面不同的Jar(我首先要问),一种实现方法是使用Java插件的main源集(及其附带的任务)来产生第一个变体,并设置了一个新的来源来产生第二个变体。此外,第二个版本需要通过其自己的配置发布,以便依赖的项目可以引用它。可能如下所示:

core/build.gradle:

apply plugin: "java"

sourceCompatibility = 1.4

sourceSets {
main1_4 {
def main = sourceSets.main
java.srcDirs = main.java.srcDirs
resources.srcDirs = main.resources.srcDirs
compileClasspath = main.compileClasspath
runtimeClasspath = main.runtimeClasspath
}
}

compileJava {
targetCompatibility = 1.6
}

compileMain1_4Java {
targetCompatibility = 1.4
}

jar {
archiveName = "core-1.6.jar"
}

main1_4Jar {
archiveName = "core-1.4.jar"
}

configurations {
archives1_4
}

artifacts {
archives1_4 main1_4Jar
}

在相关项目中:
dependencies {
compile project(":core") // depend on 1.6 version
compile project(path: ":core", configuration: "archives1_4") // depend on 1.4 version
}

所有这些都可以(但不是必须)在相同的构建脚本中完成。有关详细信息,请参见 Gradle User Guide中的“多项目构建”一章。

关于gradle - 编译具有不同Java源兼容性的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18190614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com