From e19d553570ca882e0a982cb894e63c5e0e14a50e Mon Sep 17 00:00:00 2001 From: Serban Iordache Date: Sat, 30 Oct 2021 01:40:48 +0200 Subject: [PATCH] add property 'neverCompileModuleInfo' --- .../org/beryx/jar/JarTaskConfigurer.groovy | 8 ++++++-- .../org/beryx/jar/ModuleConfigExtension.groovy | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/groovy/org/beryx/jar/JarTaskConfigurer.groovy b/src/main/groovy/org/beryx/jar/JarTaskConfigurer.groovy index e746f44..505b907 100644 --- a/src/main/groovy/org/beryx/jar/JarTaskConfigurer.groovy +++ b/src/main/groovy/org/beryx/jar/JarTaskConfigurer.groovy @@ -19,6 +19,7 @@ import com.github.javaparser.ast.modules.ModuleDeclaration import groovy.transform.CompileDynamic import groovy.transform.CompileStatic import org.beryx.jar.ModuleConfigExtension.ModuleData +import org.gradle.api.DefaultTask import org.gradle.api.GradleException import org.gradle.api.JavaVersion import org.gradle.api.Project @@ -35,6 +36,7 @@ class JarTaskConfigurer { private final Logger LOGGER = PluginLogger.of(JarTaskConfigurer) public static final String COMPILE_NON_JPMS_TASK_NAME = "compileNonJpms" + public static final String MAKE_MODULE_INFO_DIR_TASK_NAME = "makeModuleInfoDir" final Project project final Jar jarTask @@ -65,7 +67,7 @@ class JarTaskConfigurer { if(moduleInfoJava) { int toolchainVersion = compilerVersion.majorVersion as int LOGGER.debug("toolchainVersion: $toolchainVersion") - if(toolchainVersion > 8) { + if(toolchainVersion > 8 && !moduleData.neverCompileModuleInfo) { configureJpmsToolchain() } else { configureNonJpmsToolchain() @@ -157,7 +159,9 @@ class JarTaskConfigurer { mainSourceSet.java.exclude('**/module-info.java') - compileJava.doFirst { + def mkdirsTask = project.tasks.maybeCreate(MAKE_MODULE_INFO_DIR_TASK_NAME, DefaultTask) + compileJava.dependsOn(mkdirsTask) + mkdirsTask.doFirst { moduleInfoTargetDir.mkdirs() if(!moduleInfoTargetDir.directory) throw new GradleException("Cannot create directory $moduleInfoTargetDir") LOGGER.debug("Directory $moduleInfoTargetDir created.") diff --git a/src/main/groovy/org/beryx/jar/ModuleConfigExtension.groovy b/src/main/groovy/org/beryx/jar/ModuleConfigExtension.groovy index 72ad6ed..8d6b644 100644 --- a/src/main/groovy/org/beryx/jar/ModuleConfigExtension.groovy +++ b/src/main/groovy/org/beryx/jar/ModuleConfigExtension.groovy @@ -26,28 +26,33 @@ class ModuleConfigExtension { final Property multiRelease final Property version final Property moduleInfoCompatibility + final Property neverCompileModuleInfo static class ModuleData { final String moduleInfoPath final boolean multiRelease final String version final int moduleInfoCompatibility + final boolean neverCompileModuleInfo - ModuleData(String moduleInfoPath, boolean multiRelease, String version, int moduleInfoCompatibility) { + ModuleData(String moduleInfoPath, boolean multiRelease, + String version, int moduleInfoCompatibility, boolean neverCompileModuleInfo) { this.moduleInfoPath = moduleInfoPath this.multiRelease = multiRelease this.version = version this.moduleInfoCompatibility = moduleInfoCompatibility + this.neverCompileModuleInfo = neverCompileModuleInfo } } ModuleConfigExtension(Project project) { this.project = project - moduleInfoPath = project.objects.property(String) - multiRelease = project.objects.property(Boolean) - version = project.objects.property(String) - moduleInfoCompatibility = project.objects.property(Integer) + this.moduleInfoPath = project.objects.property(String) + this.multiRelease = project.objects.property(Boolean) + this.version = project.objects.property(String) + this.moduleInfoCompatibility = project.objects.property(Integer) + this.neverCompileModuleInfo = project.objects.property(Boolean) } ModuleData getData() { @@ -55,7 +60,8 @@ class ModuleConfigExtension { moduleInfoPath.getOrElse(''), multiRelease.getOrElse(true), version.getOrElse(''), - moduleInfoCompatibility.getOrElse(9) + moduleInfoCompatibility.getOrElse(9), + neverCompileModuleInfo.getOrElse(false) ) } }