Commit 8405df10 authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '2.4.x' into 2.5.x

Closes gh-26997
parents c99d1dae e18eb082
...@@ -19,7 +19,6 @@ package org.springframework.boot.gradle.plugin; ...@@ -19,7 +19,6 @@ package org.springframework.boot.gradle.plugin;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.Set; import java.util.Set;
import org.gradle.api.Action; import org.gradle.api.Action;
...@@ -41,6 +40,7 @@ import org.gradle.api.plugins.JavaPluginConvention; ...@@ -41,6 +40,7 @@ import org.gradle.api.plugins.JavaPluginConvention;
import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.SourceSetContainer;
import org.gradle.api.tasks.TaskProvider; import org.gradle.api.tasks.TaskProvider;
import org.gradle.api.tasks.bundling.Jar; import org.gradle.api.tasks.bundling.Jar;
import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.api.tasks.compile.JavaCompile;
...@@ -195,7 +195,11 @@ final class JavaPluginAction implements PluginApplicationAction { ...@@ -195,7 +195,11 @@ final class JavaPluginAction implements PluginApplicationAction {
} }
private void configureAdditionalMetadataLocations(JavaCompile compile) { private void configureAdditionalMetadataLocations(JavaCompile compile) {
compile.doFirst(new AdditionalMetadataLocationsConfigurer()); SourceSetContainer sourceSets = compile.getProject().getConvention().getPlugin(JavaPluginConvention.class)
.getSourceSets();
sourceSets.stream().filter((candidate) -> candidate.getCompileJavaTaskName().equals(compile.getName()))
.map((match) -> match.getResources().getSrcDirs()).findFirst()
.ifPresent((locations) -> compile.doFirst(new AdditionalMetadataLocationsConfigurer(locations)));
} }
private void configureDevelopmentOnlyConfiguration(Project project) { private void configureDevelopmentOnlyConfiguration(Project project) {
...@@ -225,7 +229,13 @@ final class JavaPluginAction implements PluginApplicationAction { ...@@ -225,7 +229,13 @@ final class JavaPluginAction implements PluginApplicationAction {
* inner-class rather than a lambda due to * inner-class rather than a lambda due to
* https://github.com/gradle/gradle/issues/5510. * https://github.com/gradle/gradle/issues/5510.
*/ */
private static class AdditionalMetadataLocationsConfigurer implements Action<Task> { private static final class AdditionalMetadataLocationsConfigurer implements Action<Task> {
private final Set<File> locations;
private AdditionalMetadataLocationsConfigurer(Set<File> locations) {
this.locations = locations;
}
@Override @Override
public void execute(Task task) { public void execute(Task task) {
...@@ -234,8 +244,7 @@ final class JavaPluginAction implements PluginApplicationAction { ...@@ -234,8 +244,7 @@ final class JavaPluginAction implements PluginApplicationAction {
} }
JavaCompile compile = (JavaCompile) task; JavaCompile compile = (JavaCompile) task;
if (hasConfigurationProcessorOnClasspath(compile)) { if (hasConfigurationProcessorOnClasspath(compile)) {
findMatchingSourceSet(compile) configureAdditionalMetadataLocations(compile);
.ifPresent((sourceSet) -> configureAdditionalMetadataLocations(compile, sourceSet));
} }
} }
...@@ -246,15 +255,10 @@ final class JavaPluginAction implements PluginApplicationAction { ...@@ -246,15 +255,10 @@ final class JavaPluginAction implements PluginApplicationAction {
.anyMatch((name) -> name.startsWith("spring-boot-configuration-processor")); .anyMatch((name) -> name.startsWith("spring-boot-configuration-processor"));
} }
private Optional<SourceSet> findMatchingSourceSet(JavaCompile compile) { private void configureAdditionalMetadataLocations(JavaCompile compile) {
return compile.getProject().getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().stream()
.filter((sourceSet) -> sourceSet.getCompileJavaTaskName().equals(compile.getName())).findFirst();
}
private void configureAdditionalMetadataLocations(JavaCompile compile, SourceSet sourceSet) {
String locations = StringUtils.collectionToCommaDelimitedString(sourceSet.getResources().getSrcDirs());
compile.getOptions().getCompilerArgs() compile.getOptions().getCompilerArgs()
.add("-Aorg.springframework.boot.configurationprocessor.additionalMetadataLocations=" + locations); .add("-Aorg.springframework.boot.configurationprocessor.additionalMetadataLocations="
+ StringUtils.collectionToCommaDelimitedString(this.locations));
} }
} }
......
...@@ -31,11 +31,11 @@ import org.springframework.boot.gradle.testkit.GradleBuild; ...@@ -31,11 +31,11 @@ import org.springframework.boot.gradle.testkit.GradleBuild;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
/** /**
* Integration tests for {@link WarPluginAction}. * Integration tests for {@link JavaPluginAction}.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
*/ */
@GradleCompatibility @GradleCompatibility(configurationCache = true)
class JavaPluginActionIntegrationTests { class JavaPluginActionIntegrationTests {
GradleBuild gradleBuild; GradleBuild gradleBuild;
......
...@@ -37,9 +37,13 @@ task('configurationAttributes') { ...@@ -37,9 +37,13 @@ task('configurationAttributes') {
} }
task('configurationResolvabilityAndConsumability') { task('configurationResolvabilityAndConsumability') {
if (project.hasProperty("configurationName")) {
Configuration configuration = configurations.findByName(configurationName)
def canBeResolved = configuration.canBeResolved
def canBeConsumed = configuration.canBeConsumed
doFirst { doFirst {
def configuration = configurations.findByName(configurationName) println "canBeResolved: ${canBeResolved}"
println "canBeResolved: ${configuration.canBeResolved}" println "canBeConsumed: ${canBeConsumed}"
println "canBeConsumed: ${configuration.canBeConsumed}" }
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment