我有一个包含 3 个不同项目的多项目配置。
其中 2 个项目依赖于第三个项目,我将其命名为“核心”。
根据项目的不同,“core”必须编译为 jar,分别与 1.4 和 1.6 兼容,输出为 core-1.4.jar 和 core-1.6.jar。
是否可以使用单个 build.gradle 来完成此操作,或者最好的方法是什么?如何在这两个项目的依赖项中特别指定哪个 jar?
这个问题从根本上讲是关于如何生成和使用基于相同 Java 代码的工件的两个变体。假设您确实需要生成两个仅在目标兼容性上有所不同的 Jars(这是我首先要问的),实现此目的的一种方法是使用 Java 插件main
源集(以及随之而来的任务)来生成第一个变体,以及一个新的源集来生成第二个变体。此外,第二个变体需要通过其自己的配置发布,以便相关项目可以引用它。这可能如下所示:
核心/构建.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
}
所有这些都可以(但不必)在同一个构建脚本中完成。请参阅“多项目构建”章节摇篮用户指南 http://gradle.org/docs/current/userguide/userguide_single.html了解详情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)