Skip to content

Commit

Permalink
add property 'neverCompileModuleInfo'
Browse files Browse the repository at this point in the history
  • Loading branch information
siordache committed Oct 29, 2021
1 parent 2af367b commit e19d553
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 8 deletions.
8 changes: 6 additions & 2 deletions src/main/groovy/org/beryx/jar/JarTaskConfigurer.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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.")
Expand Down
18 changes: 12 additions & 6 deletions src/main/groovy/org/beryx/jar/ModuleConfigExtension.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -26,36 +26,42 @@ class ModuleConfigExtension {
final Property<Boolean> multiRelease
final Property<String> version
final Property<Integer> moduleInfoCompatibility
final Property<Boolean> 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() {
new ModuleData(
moduleInfoPath.getOrElse(''),
multiRelease.getOrElse(true),
version.getOrElse(''),
moduleInfoCompatibility.getOrElse(9)
moduleInfoCompatibility.getOrElse(9),
neverCompileModuleInfo.getOrElse(false)
)
}
}

0 comments on commit e19d553

Please sign in to comment.