various fixes

This commit is contained in:
2021-09-25 21:31:33 +02:00
parent da358d3522
commit 87d040d125
18 changed files with 126 additions and 93 deletions

View File

@@ -6,7 +6,6 @@ subprojects {
url = woggioniMavenRepositoryUrl url = woggioniMavenRepositoryUrl
} }
mavenCentral() mavenCentral()
jcenter()
} }
group = "net.woggioni.gradle" group = "net.woggioni.gradle"
@@ -22,28 +21,27 @@ subprojects {
tasks.named("test", Test) { tasks.named("test", Test) {
useJUnitPlatform() useJUnitPlatform()
} }
}
java { childProjects.forEach { name, project ->
sourceCompatibility = JavaVersion.VERSION_11 project.with {
targetCompatibility = JavaVersion.VERSION_11 publishing {
} repositories {
maven {
publishing { url = woggioniMavenRepositoryUrl
repositories { }
maven {
url = woggioniMavenRepositoryUrl
} }
} publications {
publications { maven(MavenPublication) {
maven(MavenPublication) { from(components["java"])
from(components["java"]) }
} }
} }
} }
} }
wrapper { wrapper {
gradleVersion = "7.1.1" gradleVersion = getProperty("version.gradle")
distributionType = Wrapper.DistributionType.ALL distributionType = Wrapper.DistributionType.ALL
} }

View File

@@ -1,24 +1,13 @@
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath "net.woggioni.gradle:dependency-export:0.1"
}
}
plugins { plugins {
id "net.woggioni.gradle.dependency-export" version "0.1" id "net.woggioni.gradle.dependency-export"
} }
repositories { repositories {
jcenter() mavenCentral()
mavenLocal()
} }
exportDependencies { exportDependencies {
configurationName = 'runtimeCl' configurationName = 'runtimeClasspath'
} }
renderDependencies { renderDependencies {

View File

@@ -1,6 +1,10 @@
pluginManagement { pluginManagement {
repositories { repositories {
mavenLocal() maven {
gradlePluginPortal() url = 'https://woggioni.net/mvn/'
}
}
plugins {
id "net.woggioni.gradle.dependency-export" version "0.1"
} }
} }

View File

@@ -1,21 +1,9 @@
buildscript {
repositories {
mavenLocal()
jcenter()
mavenCentral()
}
dependencies {
classpath("net.woggioni.gradle:dependency-export:0.1")
}
}
plugins { plugins {
id("net.woggioni.gradle.dependency-export") version "0.1" id("net.woggioni.gradle.dependency-export")
} }
repositories { repositories {
jcenter() mavenCentral()
mavenLocal()
} }
dependencies { dependencies {
@@ -23,7 +11,7 @@ dependencies {
} }
configure<ExportDependenciesPluginExtension> { configure<ExportDependenciesPluginExtension> {
configurationName = "runtime" configurationName = "runtimeClassapath"
} }
configure<RenderDependenciesPluginExtension> { configure<RenderDependenciesPluginExtension> {

View File

@@ -1,6 +1,11 @@
pluginManagement { pluginManagement {
repositories { repositories {
mavenLocal() maven {
url = 'https://woggioni.net/mvn/'
}
gradlePluginPortal() gradlePluginPortal()
} }
plugins {
id "net.woggioni.gradle.dependency-export" version "0.1"
}
} }

View File

@@ -8,8 +8,8 @@ exportDependencies {
} }
repositories { repositories {
jcenter()
mavenLocal() mavenLocal()
mavenCentral()
} }
dependencies { dependencies {

View File

@@ -1,9 +1,6 @@
woggioniMavenRepositoryUrl=https://mvn.woggioni.net/ woggioniMavenRepositoryUrl=https://mvn.woggioni.net/
version.gradle=7.2
version.kotlin=1.3.72
version.gradlePublish=0.10.1
version.lombok=1.18.16 version.lombok=1.18.16
version.slf4j=1.7.30
version.junitJupiter=5.7.2 version.junitJupiter=5.7.2
version.junitPlatform=1.7.0 version.junitPlatform=1.7.0

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@@ -5,6 +5,11 @@ plugins {
version = "0.1" version = "0.1"
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
gradlePlugin { gradlePlugin {
plugins { plugins {
create("JlinkPlugin") { create("JlinkPlugin") {

View File

@@ -1,5 +1,11 @@
package net.woggioni.gradle.jlink; 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.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.SneakyThrows; import lombok.SneakyThrows;
@@ -9,22 +15,23 @@ import org.gradle.api.GradleException;
import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.FileCollection; import org.gradle.api.file.FileCollection;
import org.gradle.api.model.ObjectFactory; 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.ListProperty;
import org.gradle.api.provider.Property; import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider; 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.JavaInstallationMetadata;
import org.gradle.jvm.toolchain.JavaLauncher; import org.gradle.jvm.toolchain.JavaLauncher;
import org.gradle.jvm.toolchain.JavaToolchainService; 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 { public class JlinkTask extends DefaultTask {

View File

@@ -7,8 +7,13 @@ version = "0.1"
gradlePlugin { gradlePlugin {
plugins { plugins {
create("JPMSCheckPlugin") { create("JPMSCheckPlugin") {
id = "net.woggioni.plugins.jpms-check" id = "net.woggioni.gradle.jpms-check"
implementationClass = "net.woggioni.gradle.jpms.check.JPMSCheckPlugin" implementationClass = "net.woggioni.gradle.jpms.check.JPMSCheckPlugin"
} }
} }
} }
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

View File

@@ -4,6 +4,11 @@ plugins {
version = "0.1" version = "0.1"
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
gradlePlugin { gradlePlugin {
plugins { plugins {
create("LombokPlugin") { create("LombokPlugin") {

View File

@@ -1,5 +1,6 @@
package net.woggioni.gradle.lombok; package net.woggioni.gradle.lombok;
import org.gradle.api.JavaVersion;
import org.gradle.api.Plugin; import org.gradle.api.Plugin;
import org.gradle.api.Project; import org.gradle.api.Project;
import org.gradle.api.Task; 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.SourceSetContainer;
import org.gradle.api.tasks.TaskContainer; import org.gradle.api.tasks.TaskContainer;
import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.TaskProvider;
import org.gradle.api.tasks.compile.JavaCompile;
import org.gradle.api.tasks.javadoc.Javadoc; import org.gradle.api.tasks.javadoc.Javadoc;
import java.io.File; import java.io.File;
import java.util.Map; import java.util.Map;
import org.gradle.jvm.toolchain.JavaToolchainSpec;
public class LombokPlugin implements Plugin<Project> { public class LombokPlugin implements Plugin<Project> {
@Override @Override
@@ -76,6 +79,21 @@ public class LombokPlugin implements Plugin<Project> {
javadoc.getInputs().files(delombokTaskProvider); 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");
});
}
}); });
} }
} }

View File

@@ -8,12 +8,12 @@ version = "0.1"
gradlePlugin { gradlePlugin {
plugins { plugins {
create("MultiVersionJarPlugin") { create("MultiVersionJarPlugin") {
id = "net.woggioni.plugins.multi-version-jar" id = "net.woggioni.gradle.multi-version-jar"
implementationClass = "net.woggioni.plugins.multi.release.jar.MultiVersionJarPlugin" implementationClass = "net.woggioni.gradle.multi.release.jar.MultiVersionJarPlugin"
} }
create("MultiReleaseJarPlugin") { create("MultiReleaseJarPlugin") {
id = "net.woggioni.plugins.multi-release-jar" id = "net.woggioni.gradle.multi-release-jar"
implementationClass = "net.woggioni.plugins.multi.release.jar.MultiReleaseJarPlugin" implementationClass = "net.woggioni.gradle.multi.release.jar.MultiReleaseJarPlugin"
} }
} }
} }

View File

@@ -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.JavaVersion
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project 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.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.internal.plugins.DslObject
import org.gradle.api.plugins.JavaPlugin import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.plugins.JavaPluginExtension import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceSet
@@ -23,12 +25,13 @@ class MultiReleaseJarPlugin implements Plugin<Project> {
it.languageVersion.get() it.languageVersion.get()
} ?: JavaVersion.current() } ?: JavaVersion.current()
if(binaryVersion > JavaVersion.VERSION_1_8) { if(binaryVersion > JavaVersion.VERSION_1_8) {
Configuration compileClasspathConfiguration = project.configurations.compileClasspath
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(JavaPlugin.COMPILE_JAVA_TASK_NAME, JavaCompile).get()
compileJavaTask.configure { compileJavaTask.configure {
options.release.set(JavaVersion.VERSION_1_8.majorVersion.toInteger()) 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 { jarTask.configure {
manifest.attributes('Multi-Release': 'true') manifest.attributes('Multi-Release': 'true')
} }
@@ -42,30 +45,42 @@ class MultiReleaseJarPlugin implements Plugin<Project> {
SourceDirectorySet sourceDirectorySet = SourceDirectorySet sourceDirectorySet =
project.objects.sourceDirectorySet("java${javaVersion.majorVersion}", javaVersion.toString()) project.objects.sourceDirectorySet("java${javaVersion.majorVersion}", javaVersion.toString())
sourceDirectorySet.with { 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}")) destinationDirectory.set(new File(project.buildDir, "classes/${sourceDirectorySet.name}"))
sourcePaths << sourceDirectories sourcePaths << sourceDirectories
} }
TaskProvider<JavaCompile> compileTask = project.tasks.register(JavaPlugin.COMPILE_JAVA_TASK_NAME + javaVersion.majorVersion, JavaCompile, { new DslObject(mainSourceSet).getConvention().getPlugins().put(sourceDirectorySet.name, sourceDirectorySet)
options.release.set(javaVersion.majorVersion.toInteger()) mainSourceSet.getExtensions().add(SourceDirectorySet.class, sourceDirectorySet.name, sourceDirectorySet)
classpath = compileOutputs.stream().reduce { fc1, fc2 -> fc1 + fc2 }.get() TaskProvider<JavaCompile> compileTask = project.tasks.register(JavaPlugin.COMPILE_JAVA_TASK_NAME + javaVersion.majorVersion, JavaCompile, { javaCompileTask ->
it.doFirst { javaCompileTask.options.release.set(javaVersion.majorVersion.toInteger())
options.compilerArgs << "--module-path" << mainSourceSet.compileClasspath.asPath 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 javaCompileTask.source = sourceDirectorySet
destinationDirectory.set(sourceDirectorySet.destinationDirectory) javaCompileTask.destinationDirectory.set(sourceDirectorySet.destinationDirectory)
options.annotationProcessorPath = mainSourceSet.annotationProcessorPath javaCompileTask.options.annotationProcessorPath = mainSourceSet.annotationProcessorPath
modularity.inferModulePath = false javaCompileTask.modularity.inferModulePath = javaPluginExtension.modularity.inferModulePath
options.sourcepath = sourcePaths.stream().reduce { fc1, fc2 -> fc1 + fc2 }.get() 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()}) sourceDirectorySet.compiledBy(compileTask, { it.getDestinationDirectory()})
jarTask.configure { jarTask.configure {
from(compileTask.get().outputs.files) { from(compileTask.get().destinationDirectory) {
into("META-INF/versions/${javaVersion.majorVersion}") 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 -> ["apiElements", "runtimeElements"].forEach { String name ->
Configuration conf = project.configurations.getByName(name) Configuration conf = project.configurations.getByName(name)
conf.attributes { conf.attributes {

View File

@@ -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.JavaVersion
import org.gradle.api.Plugin import org.gradle.api.Plugin

View File

@@ -2,11 +2,6 @@ pluginManagement {
repositories { repositories {
gradlePluginPortal() 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" rootProject.name = "my-gradle-plugins"
@@ -17,6 +12,3 @@ include("multi-release-jar")
include("wildfly") include("wildfly")
include("lombok") include("lombok")
include("jlink") include("jlink")
include("executable-jar")
include("executable-jar:executable-jar-common")
include("executable-jar:executable-jar-launcher")

View File

@@ -5,6 +5,11 @@ plugins {
version = "0.1" version = "0.1"
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
gradlePlugin { gradlePlugin {
plugins { plugins {
create("WildflyPlugin") { create("WildflyPlugin") {