Skip to content

Commit 1973e34

Browse files
committed
Do not use lambda for task action as it breaks up-to-date checks
Due to gradle/gradle#5510, using a lambda for a task action breaks up-to-date checks in certain circumstances. This commit updates JavaPluginAction to use an inner-class in place of a lambda for the action that it adds to JavaCompile tasks. A test has not been added as it does not appear to be possible to reproduce it with a TestKit-based test. Closes gh-14054
1 parent da1858f commit 1973e34

File tree

1 file changed

+38
-25
lines changed
  • spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin

1 file changed

+38
-25
lines changed

spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java

Lines changed: 38 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.gradle.api.Action;
2727
import org.gradle.api.Plugin;
2828
import org.gradle.api.Project;
29+
import org.gradle.api.Task;
2930
import org.gradle.api.file.FileCollection;
3031
import org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact;
3132
import org.gradle.api.plugins.ApplicationPlugin;
@@ -145,37 +146,49 @@ private void configureAdditionalMetadataLocations(Project project) {
145146
}
146147

147148
private void configureAdditionalMetadataLocations(JavaCompile compile) {
148-
compile.doFirst((task) -> {
149+
compile.doFirst(new AdditionalMetadataLocationsConfigurer());
150+
}
151+
152+
private static class AdditionalMetadataLocationsConfigurer implements Action<Task> {
153+
154+
@Override
155+
public void execute(Task task) {
156+
if (!(task instanceof JavaCompile)) {
157+
return;
158+
}
159+
JavaCompile compile = (JavaCompile) task;
149160
if (hasConfigurationProcessorOnClasspath(compile)) {
150161
findMatchingSourceSet(compile).ifPresent(
151162
(sourceSet) -> configureAdditionalMetadataLocations(compile,
152163
sourceSet));
153164
}
154-
});
155-
}
156-
157-
private Optional<SourceSet> findMatchingSourceSet(JavaCompile compile) {
158-
return compile.getProject().getConvention().getPlugin(JavaPluginConvention.class)
159-
.getSourceSets().stream().filter((sourceSet) -> sourceSet
160-
.getCompileJavaTaskName().equals(compile.getName()))
161-
.findFirst();
162-
}
163-
164-
private boolean hasConfigurationProcessorOnClasspath(JavaCompile compile) {
165-
Set<File> files = (compile.getOptions().getAnnotationProcessorPath() != null)
166-
? compile.getOptions().getAnnotationProcessorPath().getFiles()
167-
: compile.getClasspath().getFiles();
168-
return files.stream().map(File::getName).anyMatch(
169-
(name) -> name.startsWith("spring-boot-configuration-processor"));
170-
}
165+
}
166+
167+
private boolean hasConfigurationProcessorOnClasspath(JavaCompile compile) {
168+
Set<File> files = (compile.getOptions().getAnnotationProcessorPath() != null)
169+
? compile.getOptions().getAnnotationProcessorPath().getFiles()
170+
: compile.getClasspath().getFiles();
171+
return files.stream().map(File::getName).anyMatch(
172+
(name) -> name.startsWith("spring-boot-configuration-processor"));
173+
}
174+
175+
private Optional<SourceSet> findMatchingSourceSet(JavaCompile compile) {
176+
return compile
177+
.getProject().getConvention().getPlugin(JavaPluginConvention.class)
178+
.getSourceSets().stream().filter((sourceSet) -> sourceSet
179+
.getCompileJavaTaskName().equals(compile.getName()))
180+
.findFirst();
181+
}
182+
183+
private void configureAdditionalMetadataLocations(JavaCompile compile,
184+
SourceSet sourceSet) {
185+
String locations = StringUtils.collectionToCommaDelimitedString(
186+
sourceSet.getResources().getSrcDirs());
187+
compile.getOptions().getCompilerArgs().add(
188+
"-Aorg.springframework.boot.configurationprocessor.additionalMetadataLocations="
189+
+ locations);
190+
}
171191

172-
private void configureAdditionalMetadataLocations(JavaCompile compile,
173-
SourceSet sourceSet) {
174-
String locations = StringUtils
175-
.collectionToCommaDelimitedString(sourceSet.getResources().getSrcDirs());
176-
compile.getOptions().getCompilerArgs().add(
177-
"-Aorg.springframework.boot.configurationprocessor.additionalMetadataLocations="
178-
+ locations);
179192
}
180193

181194
}

0 commit comments

Comments
 (0)