gpt4 book ai didi

java - 如何使用 Gradle 制作多版本 JAR 文件?

转载 作者:太空狗 更新时间:2023-10-29 22:58:34 28 4
gpt4 key购买 nike

Java9 引入 Multi-Release JARs .

假设我有一个使用 java8 的多模块 Gradle 项目:

project-root
settings.gradle
build.gradle
/module1
/src
... (common maven structure)
/module2
/module3

这是Gradle中常见的多模块项目。假设我需要 MR-Jar 用于 module1

我无法添加针对 Java9 的 module1-java9,因为基础是 8 - 到目前为止,我的 Gradle 和 IntelliJ IDEA 都提示。 Gradle 是用 java8 编译的,但我需要为模块启用 java9 运行时(不知道如何);在 IntelliJ IDEA 中,我可以为模块设置 java9 运行时,但每次重新加载 gradle 配置时它都会被覆盖。

此外,即使我以某种方式添加它,我也需要指示 module1 1) 构建第二个和 2) 以包含 module1-java9。这是这种情况的示意图:

project-root
settings.gradle
build.gradle
/module1
/module1-java9 (added java9 module)
/module2
...

或者,这可以在 module1 下完成,具有不同的来源:srcsrc-java9。但我怀疑这是否会被接受。这是一张图:

project-root
settings.gradle
build.gradle
/module1
/src
/src-java9 (added java9 source folder)
/module2
/module3

到目前为止,我只看到 module1-java9 是一个单独的项目(不是模块)并且 module1 只是在那里调用 gradle 并获取输出。是的,是 gradle 调用 gradle :)))

是否有任何开发人员友好的方式来做到这一点?

最佳答案

如问题评论中所述,this blog post和相关的example project描述如何使用 Gradle 创建多版本 JAR。

如果博客文章或示例项目消失,您还可以引用以下设置,该设置源自示例项目并针对问题中给出的设置进行了一些调整(只要提供了详细信息) ).

概览

project-root/
├── build.gradle
├── module1
│   └── src
│   └── main
│   ├── java
│   │   └── com
│   │   └── acme
│   │   ├── JdkSpecific.java
│   │   └── Shared.java
│   └── java9
│   └── com
│   └── acme
│   └── JdkSpecific.java
├── module2
│   └── whatever
├── module3
│   └── whatever
└── settings.gradle

build.gradle

allprojects {
apply plugin: 'java'

compileJava {
sourceCompatibility = 8
targetCompatibility = 8
}
}

dependencies {
implementation project(':module1')
}

project(':module1') {
sourceSets {
java9 {
java {
srcDirs = ['src/main/java9']
}
}
}

compileJava9Java {
sourceCompatibility = 9
targetCompatibility = 9
}

dependencies {
java9Implementation files(sourceSets.main.output.classesDirs) {
builtBy compileJava
}
}

jar {
into('META-INF/versions/9') {
from sourceSets.java9.output
}
manifest.attributes('Multi-Release': 'true')
}
}

settings.gradle

include 'module1', 'module2', 'module3'

关于java - 如何使用 Gradle 制作多版本 JAR 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47648533/

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