Skip to content

Commit 64eb4ac

Browse files
committed
do not use Project within configuration lambda (#54)
* as it would break configuration-cache * Thanks to @C-Otto for the decisive link (#54 (comment)) Signed-off-by: Andreas Schmid <[email protected]>
1 parent 689b1cd commit 64eb4ac

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/main/java/de/aaschmid/gradle/plugins/cpd/CpdPlugin.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,23 @@
99
import org.gradle.api.Task;
1010
import org.gradle.api.artifacts.Configuration;
1111
import org.gradle.api.execution.TaskExecutionGraph;
12+
import org.gradle.api.file.ProjectLayout;
13+
import org.gradle.api.file.RegularFile;
1214
import org.gradle.api.internal.ConventionMapping;
1315
import org.gradle.api.internal.IConventionAware;
1416
import org.gradle.api.logging.Logger;
1517
import org.gradle.api.logging.Logging;
1618
import org.gradle.api.plugins.JavaBasePlugin;
1719
import org.gradle.api.plugins.JavaPluginConvention;
1820
import org.gradle.api.plugins.ReportingBasePlugin;
21+
import org.gradle.api.provider.Provider;
22+
import org.gradle.api.provider.ProviderFactory;
1923
import org.gradle.api.reporting.ReportingExtension;
2024
import org.gradle.api.tasks.TaskProvider;
2125
import org.gradle.language.base.plugins.LifecycleBasePlugin;
2226

2327
import static java.util.Collections.reverseOrder;
28+
import static org.gradle.api.internal.lambdas.SerializableLambdas.action;
2429

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

126+
ProjectLayout layout = project.getLayout();
127+
ProviderFactory providers = project.getProviders();
121128
task.getReports().all(report -> {
122129
report.getRequired().convention("xml".equals(report.getName()));
123-
report.getOutputLocation().convention(project.getLayout().getProjectDirectory().file(project.provider(() ->
130+
report.getOutputLocation().convention(layout.getProjectDirectory().file(providers.provider(() ->
124131
new File(extension.getReportsDir(), task.getName() + "." + report.getName()).getAbsolutePath())));
125132
});
126133
});

0 commit comments

Comments
 (0)