Ответ 1
Как упоминалось в комментариях к вопросу, в этом блоге и связанном с ним примере проекта описывается, как создать JAR с несколькими выпусками с Gradle.
В случае, если публикация в блоге или пример проекта исчезнут, вы также можете обратиться к следующей настройке, которая была получена из примера проекта и немного адаптирована к настройке, приведенной в вопросе (если предоставлена подробная информация).
Обзор
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'