Skip to content

Commit

Permalink
do not use Project within configuration lambda (#54)
Browse files Browse the repository at this point in the history
* as it would break configuration-cache
* Thanks to @C-Otto for the decisive link
  (#54 (comment))

Signed-off-by: Andreas Schmid <service@aaschmid.de>
  • Loading branch information
aaschmid committed Mar 28, 2021
1 parent 689b1cd commit 64eb4ac
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/main/java/de/aaschmid/gradle/plugins/cpd/CpdPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,23 @@
import org.gradle.api.Task;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.execution.TaskExecutionGraph;
import org.gradle.api.file.ProjectLayout;
import org.gradle.api.file.RegularFile;
import org.gradle.api.internal.ConventionMapping;
import org.gradle.api.internal.IConventionAware;
import org.gradle.api.logging.Logger;
import org.gradle.api.logging.Logging;
import org.gradle.api.plugins.JavaBasePlugin;
import org.gradle.api.plugins.JavaPluginConvention;
import org.gradle.api.plugins.ReportingBasePlugin;
import org.gradle.api.provider.Provider;
import org.gradle.api.provider.ProviderFactory;
import org.gradle.api.reporting.ReportingExtension;
import org.gradle.api.tasks.TaskProvider;
import org.gradle.language.base.plugins.LifecycleBasePlugin;

import static java.util.Collections.reverseOrder;
import static org.gradle.api.internal.lambdas.SerializableLambdas.action;

/**
* A plugin for the finding duplicate code using <a href="http://pmd.sourceforge.net/cpd-usage.html">CPD</a> source code analyzer (which is
Expand Down Expand Up @@ -118,9 +123,11 @@ private void setupTaskDefaults(Project project, CpdExtension extension) {
ConventionMapping extensionMapping = ((IConventionAware) extension).getConventionMapping();
extensionMapping.map("reportsDir", () -> project.getExtensions().getByType(ReportingExtension.class).file("cpd"));

ProjectLayout layout = project.getLayout();
ProviderFactory providers = project.getProviders();
task.getReports().all(report -> {
report.getRequired().convention("xml".equals(report.getName()));
report.getOutputLocation().convention(project.getLayout().getProjectDirectory().file(project.provider(() ->
report.getOutputLocation().convention(layout.getProjectDirectory().file(providers.provider(() ->
new File(extension.getReportsDir(), task.getName() + "." + report.getName()).getAbsolutePath())));
});
});
Expand Down

0 comments on commit 64eb4ac

Please sign in to comment.