Skip to content

Commit

Permalink
fix(gradle): JavaGeneratorPlugin extension doesn't require project
Browse files Browse the repository at this point in the history
In order to support Gradle's configuration cache, having the Project object in extensions/tasks is not allowed:
https://docs.gradle.org/current/userguide/configuration_cache.html#config_cache:requirements:disallowed_types.

We can avoid that by injecting the ProjectLayout object directly which is legal.
  • Loading branch information
Sineaggi committed Jun 14, 2024
1 parent d964c6f commit ef55554
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class JavaGeneratorPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
// create an extension for the plugin
project.getExtensions().create(JavaGeneratorPluginExtension.NAME, JavaGeneratorPluginExtension.class, project);
project.getExtensions().create(JavaGeneratorPluginExtension.NAME, JavaGeneratorPluginExtension.class);
// register tasks
project.getTasks().register(JavaGeneratorCrd2JavaTask.NAME, JavaGeneratorCrd2JavaTask.class,
JavaGeneratorPluginExtension.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
package io.fabric8.java.generator.gradle.plugin;

import io.fabric8.java.generator.Config;
import org.gradle.api.Project;
import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.ProjectLayout;
import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.provider.ListProperty;

Expand All @@ -29,12 +29,12 @@
public abstract class JavaGeneratorPluginExtension {

public static final String NAME = "javaGen";
protected Project gradleProject;
protected final ProjectLayout layout;

private Config javaGeneratorConfig = Config.builder().build();

public JavaGeneratorPluginExtension(Project gradleProject) {
this.gradleProject = gradleProject;
public JavaGeneratorPluginExtension(ProjectLayout layout) {
this.layout = layout;
}

public Config getConfig() {
Expand Down Expand Up @@ -68,7 +68,7 @@ public List<String> getUrlsOrDefault() {

public File getDownloadTargetOrDefault() {
return this.getDownloadTarget().getAsFile()
.getOrElse(this.gradleProject.getLayout().getProjectDirectory()
.getOrElse(layout.getProjectDirectory()
.dir("build")
.dir("crds")
.getAsFile());
Expand All @@ -82,7 +82,7 @@ public File getDownloadTargetOrDefault() {

public File getTargetOrDefault() {
return this.getTarget().getAsFile()
.getOrElse(this.gradleProject.getLayout().getProjectDirectory()
.getOrElse(layout.getProjectDirectory()
.dir("build")
.dir("generated")
.dir("sources").getAsFile());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ void apply_withValidProject_shouldCreateExtensionAndRegisterTask() {
new JavaGeneratorPlugin().apply(project);
// Then
verify(project.getExtensions(), times(1))
.create(JavaGeneratorPluginExtension.NAME, JavaGeneratorPluginExtension.class, project);
.create(JavaGeneratorPluginExtension.NAME, JavaGeneratorPluginExtension.class);
verify(project.getTasks(), times(1))
.register(JavaGeneratorCrd2JavaTask.NAME, JavaGeneratorCrd2JavaTask.class, JavaGeneratorPluginExtension.class);
}
Expand Down

0 comments on commit ef55554

Please sign in to comment.