From 87d040d12574db78963065e31450e5727d03669f Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Sat, 25 Sep 2021 21:31:33 +0200 Subject: [PATCH] various fixes --- build.gradle | 28 +++++------ dependency-export/sample/groovy/build.gradle | 17 ++----- .../sample/groovy/settings.gradle | 8 +++- .../sample/kotlin/build.gradle.kts | 18 ++----- .../sample/kotlin/settings.gradle.kts | 7 ++- .../gradle/dependency/export/build.gradle | 2 +- gradle.properties | 5 +- gradle/wrapper/gradle-wrapper.properties | 2 +- jlink/build.gradle | 5 ++ .../net/woggioni/gradle/jlink/JlinkTask.java | 25 ++++++---- jpms-check/build.gradle | 9 +++- lombok/build.gradle | 5 ++ .../woggioni/gradle/lombok/LombokPlugin.java | 18 +++++++ multi-release-jar/build.gradle | 8 ++-- .../release/jar/MultiReleaseJarPlugin.groovy | 47 ++++++++++++------- .../release/jar/MultiVersionJarPlugin.groovy | 2 +- settings.gradle | 8 ---- wildfly/build.gradle | 5 ++ 18 files changed, 126 insertions(+), 93 deletions(-) rename multi-release-jar/src/main/groovy/net/woggioni/{plugins => gradle}/multi/release/jar/MultiReleaseJarPlugin.groovy (54%) rename multi-release-jar/src/main/groovy/net/woggioni/{plugins => gradle}/multi/release/jar/MultiVersionJarPlugin.groovy (98%) diff --git a/build.gradle b/build.gradle index e926245..06125ea 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,6 @@ subprojects { url = woggioniMavenRepositoryUrl } mavenCentral() - jcenter() } group = "net.woggioni.gradle" @@ -22,28 +21,27 @@ subprojects { tasks.named("test", Test) { useJUnitPlatform() } +} - java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } - - publishing { - repositories { - maven { - url = woggioniMavenRepositoryUrl +childProjects.forEach { name, project -> + project.with { + publishing { + repositories { + maven { + url = woggioniMavenRepositoryUrl + } } - } - publications { - maven(MavenPublication) { - from(components["java"]) + publications { + maven(MavenPublication) { + from(components["java"]) + } } } } } wrapper { - gradleVersion = "7.1.1" + gradleVersion = getProperty("version.gradle") distributionType = Wrapper.DistributionType.ALL } diff --git a/dependency-export/sample/groovy/build.gradle b/dependency-export/sample/groovy/build.gradle index 6f69a01..9e7e699 100644 --- a/dependency-export/sample/groovy/build.gradle +++ b/dependency-export/sample/groovy/build.gradle @@ -1,24 +1,13 @@ -buildscript { - repositories { - mavenLocal() - } - - dependencies { - classpath "net.woggioni.gradle:dependency-export:0.1" - } -} - plugins { - id "net.woggioni.gradle.dependency-export" version "0.1" + id "net.woggioni.gradle.dependency-export" } repositories { - jcenter() - mavenLocal() + mavenCentral() } exportDependencies { - configurationName = 'runtimeCl' + configurationName = 'runtimeClasspath' } renderDependencies { diff --git a/dependency-export/sample/groovy/settings.gradle b/dependency-export/sample/groovy/settings.gradle index c226708..b1442f5 100644 --- a/dependency-export/sample/groovy/settings.gradle +++ b/dependency-export/sample/groovy/settings.gradle @@ -1,6 +1,10 @@ pluginManagement { repositories { - mavenLocal() - gradlePluginPortal() + maven { + url = 'https://woggioni.net/mvn/' + } + } + plugins { + id "net.woggioni.gradle.dependency-export" version "0.1" } } diff --git a/dependency-export/sample/kotlin/build.gradle.kts b/dependency-export/sample/kotlin/build.gradle.kts index 55355a7..e221145 100644 --- a/dependency-export/sample/kotlin/build.gradle.kts +++ b/dependency-export/sample/kotlin/build.gradle.kts @@ -1,21 +1,9 @@ -buildscript { - repositories { - mavenLocal() - jcenter() - mavenCentral() - } - dependencies { - classpath("net.woggioni.gradle:dependency-export:0.1") - } -} - plugins { - id("net.woggioni.gradle.dependency-export") version "0.1" + id("net.woggioni.gradle.dependency-export") } repositories { - jcenter() - mavenLocal() + mavenCentral() } dependencies { @@ -23,7 +11,7 @@ dependencies { } configure { - configurationName = "runtime" + configurationName = "runtimeClassapath" } configure { diff --git a/dependency-export/sample/kotlin/settings.gradle.kts b/dependency-export/sample/kotlin/settings.gradle.kts index c226708..bb44474 100644 --- a/dependency-export/sample/kotlin/settings.gradle.kts +++ b/dependency-export/sample/kotlin/settings.gradle.kts @@ -1,6 +1,11 @@ pluginManagement { repositories { - mavenLocal() + maven { + url = 'https://woggioni.net/mvn/' + } gradlePluginPortal() } + plugins { + id "net.woggioni.gradle.dependency-export" version "0.1" + } } diff --git a/dependency-export/src/test/resources/net/woggioni/gradle/dependency/export/build.gradle b/dependency-export/src/test/resources/net/woggioni/gradle/dependency/export/build.gradle index 51fc278..4deec73 100644 --- a/dependency-export/src/test/resources/net/woggioni/gradle/dependency/export/build.gradle +++ b/dependency-export/src/test/resources/net/woggioni/gradle/dependency/export/build.gradle @@ -8,8 +8,8 @@ exportDependencies { } repositories { - jcenter() mavenLocal() + mavenCentral() } dependencies { diff --git a/gradle.properties b/gradle.properties index 18ae4cc..7dd5cb9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,9 +1,6 @@ woggioniMavenRepositoryUrl=https://mvn.woggioni.net/ - -version.kotlin=1.3.72 -version.gradlePublish=0.10.1 +version.gradle=7.2 version.lombok=1.18.16 -version.slf4j=1.7.30 version.junitJupiter=5.7.2 version.junitPlatform=1.7.0 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index af7be50..a0f7639 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/jlink/build.gradle b/jlink/build.gradle index e2894d2..8b5735c 100644 --- a/jlink/build.gradle +++ b/jlink/build.gradle @@ -5,6 +5,11 @@ plugins { version = "0.1" +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + gradlePlugin { plugins { create("JlinkPlugin") { diff --git a/jlink/src/main/java/net/woggioni/gradle/jlink/JlinkTask.java b/jlink/src/main/java/net/woggioni/gradle/jlink/JlinkTask.java index d1ad5d2..43822bf 100644 --- a/jlink/src/main/java/net/woggioni/gradle/jlink/JlinkTask.java +++ b/jlink/src/main/java/net/woggioni/gradle/jlink/JlinkTask.java @@ -1,5 +1,11 @@ package net.woggioni.gradle.jlink; +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import javax.annotation.Nonnull; +import javax.inject.Inject; import lombok.Getter; import lombok.Setter; import lombok.SneakyThrows; @@ -9,22 +15,23 @@ import org.gradle.api.GradleException; import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.FileCollection; import org.gradle.api.model.ObjectFactory; -import org.gradle.api.plugins.*; +import org.gradle.api.plugins.BasePluginExtension; +import org.gradle.api.plugins.ExtensionContainer; +import org.gradle.api.plugins.JavaApplication; +import org.gradle.api.plugins.JavaPlugin; +import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.*; +import org.gradle.api.tasks.Input; +import org.gradle.api.tasks.InputFiles; +import org.gradle.api.tasks.Optional; +import org.gradle.api.tasks.OutputDirectory; +import org.gradle.api.tasks.TaskAction; import org.gradle.jvm.toolchain.JavaInstallationMetadata; import org.gradle.jvm.toolchain.JavaLauncher; import org.gradle.jvm.toolchain.JavaToolchainService; -import javax.annotation.Nonnull; -import javax.inject.Inject; -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - public class JlinkTask extends DefaultTask { diff --git a/jpms-check/build.gradle b/jpms-check/build.gradle index 843fd3b..489d23e 100644 --- a/jpms-check/build.gradle +++ b/jpms-check/build.gradle @@ -7,8 +7,13 @@ version = "0.1" gradlePlugin { plugins { create("JPMSCheckPlugin") { - id = "net.woggioni.plugins.jpms-check" + id = "net.woggioni.gradle.jpms-check" implementationClass = "net.woggioni.gradle.jpms.check.JPMSCheckPlugin" } } -} \ No newline at end of file +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} diff --git a/lombok/build.gradle b/lombok/build.gradle index 3c9bca9..ddf536d 100644 --- a/lombok/build.gradle +++ b/lombok/build.gradle @@ -4,6 +4,11 @@ plugins { version = "0.1" +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + gradlePlugin { plugins { create("LombokPlugin") { diff --git a/lombok/src/main/java/net/woggioni/gradle/lombok/LombokPlugin.java b/lombok/src/main/java/net/woggioni/gradle/lombok/LombokPlugin.java index fe35329..82216c9 100644 --- a/lombok/src/main/java/net/woggioni/gradle/lombok/LombokPlugin.java +++ b/lombok/src/main/java/net/woggioni/gradle/lombok/LombokPlugin.java @@ -1,5 +1,6 @@ package net.woggioni.gradle.lombok; +import org.gradle.api.JavaVersion; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; @@ -13,10 +14,12 @@ import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.TaskContainer; import org.gradle.api.tasks.TaskProvider; +import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.api.tasks.javadoc.Javadoc; import java.io.File; import java.util.Map; +import org.gradle.jvm.toolchain.JavaToolchainSpec; public class LombokPlugin implements Plugin { @Override @@ -76,6 +79,21 @@ public class LombokPlugin implements Plugin { javadoc.getInputs().files(delombokTaskProvider); } } + JavaPluginExtension javaPluginExtension = project.getExtensions().findByType(JavaPluginExtension.class); + JavaToolchainSpec toolchain = javaPluginExtension.getToolchain(); + if(toolchain.getLanguageVersion().isPresent()) { + project.afterEvaluate((Project pro) -> { + if(toolchain.getLanguageVersion().get().asInt() >= 16) { + pro.getTasks().withType(JavaCompile.class, t -> { + t.getOptions().getForkOptions().getJvmArgs().add("--illegal-access=permit"); + }); + } + }); + } else if(JavaVersion.current().compareTo(JavaVersion.VERSION_16) >= 0) { + project.getTasks().withType(JavaCompile.class, t -> { + t.getOptions().getForkOptions().getJvmArgs().add("--illegal-access=permit"); + }); + } }); } } diff --git a/multi-release-jar/build.gradle b/multi-release-jar/build.gradle index 8fc2b0c..d517680 100644 --- a/multi-release-jar/build.gradle +++ b/multi-release-jar/build.gradle @@ -8,12 +8,12 @@ version = "0.1" gradlePlugin { plugins { create("MultiVersionJarPlugin") { - id = "net.woggioni.plugins.multi-version-jar" - implementationClass = "net.woggioni.plugins.multi.release.jar.MultiVersionJarPlugin" + id = "net.woggioni.gradle.multi-version-jar" + implementationClass = "net.woggioni.gradle.multi.release.jar.MultiVersionJarPlugin" } create("MultiReleaseJarPlugin") { - id = "net.woggioni.plugins.multi-release-jar" - implementationClass = "net.woggioni.plugins.multi.release.jar.MultiReleaseJarPlugin" + id = "net.woggioni.gradle.multi-release-jar" + implementationClass = "net.woggioni.gradle.multi.release.jar.MultiReleaseJarPlugin" } } } diff --git a/multi-release-jar/src/main/groovy/net/woggioni/plugins/multi/release/jar/MultiReleaseJarPlugin.groovy b/multi-release-jar/src/main/groovy/net/woggioni/gradle/multi/release/jar/MultiReleaseJarPlugin.groovy similarity index 54% rename from multi-release-jar/src/main/groovy/net/woggioni/plugins/multi/release/jar/MultiReleaseJarPlugin.groovy rename to multi-release-jar/src/main/groovy/net/woggioni/gradle/multi/release/jar/MultiReleaseJarPlugin.groovy index 0fbc083..a153ae8 100644 --- a/multi-release-jar/src/main/groovy/net/woggioni/plugins/multi/release/jar/MultiReleaseJarPlugin.groovy +++ b/multi-release-jar/src/main/groovy/net/woggioni/gradle/multi/release/jar/MultiReleaseJarPlugin.groovy @@ -1,5 +1,6 @@ -package net.woggioni.plugins.multi.release.jar +package net.woggioni.gradle.multi.release.jar +import org.gradle.api.GradleException import org.gradle.api.JavaVersion import org.gradle.api.Plugin import org.gradle.api.Project @@ -7,6 +8,7 @@ import org.gradle.api.artifacts.Configuration import org.gradle.api.attributes.java.TargetJvmVersion import org.gradle.api.file.FileCollection import org.gradle.api.file.SourceDirectorySet +import org.gradle.api.internal.plugins.DslObject import org.gradle.api.plugins.JavaPlugin import org.gradle.api.plugins.JavaPluginExtension import org.gradle.api.tasks.SourceSet @@ -23,12 +25,13 @@ class MultiReleaseJarPlugin implements Plugin { it.languageVersion.get() } ?: JavaVersion.current() if(binaryVersion > JavaVersion.VERSION_1_8) { + Configuration compileClasspathConfiguration = project.configurations.compileClasspath SourceSet mainSourceSet = (project.sourceSets.main as SourceSet) - JavaCompile compileJavaTask = project.tasks.named("compileJava", JavaCompile).get() + JavaCompile compileJavaTask = project.tasks.named(JavaPlugin.COMPILE_JAVA_TASK_NAME, JavaCompile).get() compileJavaTask.configure { options.release.set(JavaVersion.VERSION_1_8.majorVersion.toInteger()) } - Jar jarTask = project.tasks.named("jar", Jar).get() + Jar jarTask = project.tasks.named(JavaPlugin.JAR_TASK_NAME, Jar).get() jarTask.configure { manifest.attributes('Multi-Release': 'true') } @@ -42,30 +45,42 @@ class MultiReleaseJarPlugin implements Plugin { SourceDirectorySet sourceDirectorySet = project.objects.sourceDirectorySet("java${javaVersion.majorVersion}", javaVersion.toString()) sourceDirectorySet.with { - srcDir(new File(project.projectDir, "src/main/${sourceDirectorySet.name}")) + srcDir(new File(project.projectDir, "src/${mainSourceSet.name}/${sourceDirectorySet.name}")) destinationDirectory.set(new File(project.buildDir, "classes/${sourceDirectorySet.name}")) sourcePaths << sourceDirectories } - TaskProvider compileTask = project.tasks.register(JavaPlugin.COMPILE_JAVA_TASK_NAME + javaVersion.majorVersion, JavaCompile, { - options.release.set(javaVersion.majorVersion.toInteger()) - classpath = compileOutputs.stream().reduce { fc1, fc2 -> fc1 + fc2 }.get() - it.doFirst { - options.compilerArgs << "--module-path" << mainSourceSet.compileClasspath.asPath + new DslObject(mainSourceSet).getConvention().getPlugins().put(sourceDirectorySet.name, sourceDirectorySet) + mainSourceSet.getExtensions().add(SourceDirectorySet.class, sourceDirectorySet.name, sourceDirectorySet) + TaskProvider compileTask = project.tasks.register(JavaPlugin.COMPILE_JAVA_TASK_NAME + javaVersion.majorVersion, JavaCompile, { javaCompileTask -> + javaCompileTask.options.release.set(javaVersion.majorVersion.toInteger()) + javaCompileTask.classpath = compileClasspathConfiguration + compileOutputs.stream().reduce { fc1, fc2 -> fc1 + fc2 }.get() + javaCompileTask.doFirst { + if(project.hasProperty("jpms.module.name")) { + javaCompileTask.options.compilerArgs << "--patch-module" << + "${project.property("jpms.module.name")}=${mainSourceSet.output.asPath}" + } else { + throw new GradleException("Missing property 'jpms.module.name'") + } } - source = sourceDirectorySet - destinationDirectory.set(sourceDirectorySet.destinationDirectory) - options.annotationProcessorPath = mainSourceSet.annotationProcessorPath - modularity.inferModulePath = false - options.sourcepath = sourcePaths.stream().reduce { fc1, fc2 -> fc1 + fc2 }.get() + javaCompileTask.source = sourceDirectorySet + javaCompileTask.destinationDirectory.set(sourceDirectorySet.destinationDirectory) + javaCompileTask.options.annotationProcessorPath = mainSourceSet.annotationProcessorPath + javaCompileTask.modularity.inferModulePath = javaPluginExtension.modularity.inferModulePath + javaCompileTask.options.sourcepath = sourcePaths.stream().reduce { fc1, fc2 -> fc1 + fc2 }.get() }) - compileOutputs << compileJavaTask.outputs.files + compileOutputs << compileTask.get().outputs.files sourceDirectorySet.compiledBy(compileTask, { it.getDestinationDirectory()}) jarTask.configure { - from(compileTask.get().outputs.files) { + from(compileTask.get().destinationDirectory) { into("META-INF/versions/${javaVersion.majorVersion}") } } + } + SourceSet testSourceSet = (project.sourceSets.test as SourceSet) + testSourceSet.compileClasspath += compileOutputs.stream().reduce { fc1, fc2 -> fc1 + fc2 }.get() + testSourceSet.runtimeClasspath += compileOutputs.stream().reduce { fc1, fc2 -> fc1 + fc2 }.get() + ["apiElements", "runtimeElements"].forEach { String name -> Configuration conf = project.configurations.getByName(name) conf.attributes { diff --git a/multi-release-jar/src/main/groovy/net/woggioni/plugins/multi/release/jar/MultiVersionJarPlugin.groovy b/multi-release-jar/src/main/groovy/net/woggioni/gradle/multi/release/jar/MultiVersionJarPlugin.groovy similarity index 98% rename from multi-release-jar/src/main/groovy/net/woggioni/plugins/multi/release/jar/MultiVersionJarPlugin.groovy rename to multi-release-jar/src/main/groovy/net/woggioni/gradle/multi/release/jar/MultiVersionJarPlugin.groovy index d8fb926..9bf242b 100644 --- a/multi-release-jar/src/main/groovy/net/woggioni/plugins/multi/release/jar/MultiVersionJarPlugin.groovy +++ b/multi-release-jar/src/main/groovy/net/woggioni/gradle/multi/release/jar/MultiVersionJarPlugin.groovy @@ -1,4 +1,4 @@ -package net.woggioni.plugins.multi.release.jar +package net.woggioni.gradle.multi.release.jar import org.gradle.api.JavaVersion import org.gradle.api.Plugin diff --git a/settings.gradle b/settings.gradle index 6550134..81c264a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,11 +2,6 @@ pluginManagement { repositories { gradlePluginPortal() } - - plugins { - id 'org.jetbrains.kotlin.jvm' version this['version.kotlin'] - id 'com.gradle.plugin-publish' version this['version.gradlePublish'] - } } rootProject.name = "my-gradle-plugins" @@ -17,6 +12,3 @@ include("multi-release-jar") include("wildfly") include("lombok") include("jlink") -include("executable-jar") -include("executable-jar:executable-jar-common") -include("executable-jar:executable-jar-launcher") diff --git a/wildfly/build.gradle b/wildfly/build.gradle index f0b2af0..f90f585 100644 --- a/wildfly/build.gradle +++ b/wildfly/build.gradle @@ -5,6 +5,11 @@ plugins { version = "0.1" +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + gradlePlugin { plugins { create("WildflyPlugin") {