Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions src/main/java/org/javamodularity/moduleplugin/ModuleName.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
import org.gradle.api.logging.Logger;
import org.gradle.api.logging.Logging;
import org.gradle.api.plugins.JavaPluginConvention;
import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.tasks.SourceSet;
import org.gradle.util.GradleVersion;

import java.io.IOException;
import java.nio.file.Files;
Expand All @@ -23,8 +25,15 @@ class ModuleName {
Optional<String> findModuleName(Project project) {
SourceSet main;
try {
JavaPluginConvention javaConvention = project.getConvention().getPlugin(JavaPluginConvention.class);
main = javaConvention.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);
if (GradleVersion.current().compareTo(GradleVersion.version("7.1")) >= 0) {
// JavaPluginExtension#getSourceSets() is supported from Gradle 7.1
// https://docs.gradle.org/7.1/javadoc/org/gradle/api/plugins/JavaPluginExtension.html#getSourceSets--
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
main = javaPluginExtension.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);
} else {
JavaPluginConvention javaConvention = project.getConvention().getPlugin(JavaPluginConvention.class);
main = javaConvention.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);
}
} catch (IllegalStateException | UnknownDomainObjectException e) {
LOGGER.warn("Cannot obtain JavaPluginConvention", e);
return Optional.empty();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,15 @@ public void execute(Task task) {
File moduleInfoDir = helper().getModuleInfoDir();
jar.from(moduleInfoDir);
jar.doFirst(task -> {
File classesDir = helper().mainSourceSet().getJava().getOutputDir();
File classesDir;
if (GradleVersion.current().compareTo(GradleVersion.version("6.1")) >= 0) {
// SourceDirectorySet#getClassesDirectory() is supported from Gradle 6.1
// https://docs.gradle.org/6.1/javadoc/org/gradle/api/file/SourceDirectorySet.html#getClassesDirectory--
classesDir = helper().mainSourceSet().getJava().getClassesDirectory().get().getAsFile();
} else {
classesDir = helper().mainSourceSet().getJava().getOutputDir();
}

File mainModuleInfoFile = new File(classesDir, "module-info.class");
File customModuleInfoFile = new File(moduleInfoDir, "module-info.class");
if(mainModuleInfoFile.isFile() && customModuleInfoFile.isFile()) {
Expand All @@ -82,7 +90,13 @@ private JavaCompile preconfigureCompileModuleInfoJava(JavaCompile compileJava) {
compileModuleInfoJava.setSource(pathToModuleInfoJava());
compileModuleInfoJava.getOptions().setSourcepath(project.files(pathToModuleInfoJava().getParent()));

compileModuleInfoJava.setDestinationDir(helper().getModuleInfoDir());
if (GradleVersion.current().compareTo(GradleVersion.version("6.1")) >= 0) {
// AbstractCompile#getDestinationDirectory() is supported from Gradle 6.1
// https://docs.gradle.org/6.1/javadoc/org/gradle/api/tasks/compile/AbstractCompile.html#getDestinationDirectory--
compileModuleInfoJava.getDestinationDirectory().set(helper().getModuleInfoDir());
} else {
compileModuleInfoJava.setDestinationDir(helper().getModuleInfoDir());
}

// we need all the compiled classes before compiling module-info.java
compileModuleInfoJava.dependsOn(compileJava);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ void before() throws IOException {

@CartesianProductTest(name = "smokeTest({arguments})")
@CartesianValueSource(strings = {"test-project", "test-project-kotlin", "test-project-groovy"})
@CartesianValueSource(strings = {"5.1", "5.6", "6.3", "6.4.1", "6.5.1", "6.8.3", "7.0"})
@CartesianValueSource(strings = {"5.1", "5.6", "6.3", "6.4.1", "6.5.1", "6.8.3", "7.0", "7.1", "7.2"})
void smokeTest(String projectName, String gradleVersion) {
LOGGER.info("Executing smokeTest with Gradle {}", gradleVersion);
var result = GradleRunner.create()
Expand Down