updated multi reelase jar pluigin
This commit is contained in:
@@ -1,9 +1,10 @@
|
|||||||
plugins {
|
plugins {
|
||||||
`maven-publish`
|
id 'maven-publish'
|
||||||
`groovy-gradle-plugin`
|
id 'groovy-gradle-plugin'
|
||||||
id("com.gradle.plugin-publish")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
version = "0.1"
|
||||||
|
|
||||||
gradlePlugin {
|
gradlePlugin {
|
||||||
plugins {
|
plugins {
|
||||||
create("MultiVersionJarPlugin") {
|
create("MultiVersionJarPlugin") {
|
@@ -7,20 +7,22 @@ import org.gradle.api.artifacts.Configuration
|
|||||||
import org.gradle.api.attributes.java.TargetJvmVersion
|
import org.gradle.api.attributes.java.TargetJvmVersion
|
||||||
import org.gradle.api.file.FileCollection
|
import org.gradle.api.file.FileCollection
|
||||||
import org.gradle.api.file.SourceDirectorySet
|
import org.gradle.api.file.SourceDirectorySet
|
||||||
import org.gradle.api.plugins.Convention
|
import org.gradle.api.plugins.JavaPlugin
|
||||||
import org.gradle.api.plugins.JavaBasePlugin
|
import org.gradle.api.plugins.JavaPluginExtension
|
||||||
import org.gradle.api.plugins.JavaPluginConvention
|
|
||||||
import org.gradle.api.tasks.SourceSet
|
import org.gradle.api.tasks.SourceSet
|
||||||
import org.gradle.api.tasks.TaskProvider
|
import org.gradle.api.tasks.TaskProvider
|
||||||
import org.gradle.api.tasks.compile.JavaCompile
|
import org.gradle.api.tasks.compile.JavaCompile
|
||||||
import org.gradle.internal.impldep.org.apache.commons.compress.compressors.z.ZCompressorInputStream
|
|
||||||
import org.gradle.jvm.tasks.Jar
|
import org.gradle.jvm.tasks.Jar
|
||||||
|
|
||||||
class MultiReleaseJarPlugin implements Plugin<Project> {
|
class MultiReleaseJarPlugin implements Plugin<Project> {
|
||||||
@Override
|
@Override
|
||||||
void apply(Project project) {
|
void apply(Project project) {
|
||||||
project.pluginManager.apply(JavaBasePlugin)
|
project.pluginManager.apply(JavaPlugin)
|
||||||
if(JavaVersion.current() > JavaVersion.VERSION_1_8) {
|
JavaPluginExtension javaPluginExtension = project.extensions.findByType(JavaPluginExtension.class)
|
||||||
|
JavaVersion binaryVersion = javaPluginExtension.targetCompatibility ?: javaPluginExtension.toolchain?.with {
|
||||||
|
it.languageVersion.get()
|
||||||
|
} ?: JavaVersion.current()
|
||||||
|
if(binaryVersion > JavaVersion.VERSION_1_8) {
|
||||||
SourceSet mainSourceSet = (project.sourceSets.main as SourceSet)
|
SourceSet mainSourceSet = (project.sourceSets.main as SourceSet)
|
||||||
JavaCompile compileJavaTask = project.tasks.named("compileJava", JavaCompile).get()
|
JavaCompile compileJavaTask = project.tasks.named("compileJava", JavaCompile).get()
|
||||||
compileJavaTask.configure {
|
compileJavaTask.configure {
|
||||||
@@ -35,7 +37,7 @@ class MultiReleaseJarPlugin implements Plugin<Project> {
|
|||||||
ArrayList<FileCollection> sourcePaths = new ArrayList<>()
|
ArrayList<FileCollection> sourcePaths = new ArrayList<>()
|
||||||
sourcePaths << mainSourceSet.java.sourceDirectories
|
sourcePaths << mainSourceSet.java.sourceDirectories
|
||||||
Arrays.stream(JavaVersion.values()).filter {
|
Arrays.stream(JavaVersion.values()).filter {
|
||||||
it > JavaVersion.VERSION_1_8 && it <= JavaVersion.current()
|
it > JavaVersion.VERSION_1_8 && it <= binaryVersion
|
||||||
}.forEach {javaVersion ->
|
}.forEach {javaVersion ->
|
||||||
SourceDirectorySet sourceDirectorySet =
|
SourceDirectorySet sourceDirectorySet =
|
||||||
project.objects.sourceDirectorySet("java${javaVersion.majorVersion}", javaVersion.toString())
|
project.objects.sourceDirectorySet("java${javaVersion.majorVersion}", javaVersion.toString())
|
||||||
@@ -44,7 +46,7 @@ class MultiReleaseJarPlugin implements Plugin<Project> {
|
|||||||
destinationDirectory.set(new File(project.buildDir, "classes/${sourceDirectorySet.name}"))
|
destinationDirectory.set(new File(project.buildDir, "classes/${sourceDirectorySet.name}"))
|
||||||
sourcePaths << sourceDirectories
|
sourcePaths << sourceDirectories
|
||||||
}
|
}
|
||||||
TaskProvider<JavaCompile> compileTask = project.tasks.register("compileJava${javaVersion.majorVersion}", JavaCompile, {
|
TaskProvider<JavaCompile> compileTask = project.tasks.register(JavaPlugin.COMPILE_JAVA_TASK_NAME + javaVersion.majorVersion, JavaCompile, {
|
||||||
options.release.set(javaVersion.majorVersion.toInteger())
|
options.release.set(javaVersion.majorVersion.toInteger())
|
||||||
classpath = compileOutputs.stream().reduce { fc1, fc2 -> fc1 + fc2 }.get()
|
classpath = compileOutputs.stream().reduce { fc1, fc2 -> fc1 + fc2 }.get()
|
||||||
it.doFirst {
|
it.doFirst {
|
||||||
@@ -58,7 +60,7 @@ class MultiReleaseJarPlugin implements Plugin<Project> {
|
|||||||
})
|
})
|
||||||
compileOutputs << compileJavaTask.outputs.files
|
compileOutputs << compileJavaTask.outputs.files
|
||||||
sourceDirectorySet.compiledBy(compileTask, { it.getDestinationDirectory()})
|
sourceDirectorySet.compiledBy(compileTask, { it.getDestinationDirectory()})
|
||||||
jarTask.configure { Jar it ->
|
jarTask.configure {
|
||||||
from(compileTask.get().outputs.files) {
|
from(compileTask.get().outputs.files) {
|
||||||
into("META-INF/versions/${javaVersion.majorVersion}")
|
into("META-INF/versions/${javaVersion.majorVersion}")
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user