mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-09-03 04:26:12 +08:00
Merge branch '2.0.x'
This commit is contained in:
commit
e3e3a44045
@ -26,6 +26,7 @@ import java.util.concurrent.Callable;
|
||||
import org.gradle.api.Action;
|
||||
import org.gradle.api.Plugin;
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.Task;
|
||||
import org.gradle.api.file.FileCollection;
|
||||
import org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact;
|
||||
import org.gradle.api.plugins.ApplicationPlugin;
|
||||
@ -145,37 +146,49 @@ final class JavaPluginAction implements PluginApplicationAction {
|
||||
}
|
||||
|
||||
private void configureAdditionalMetadataLocations(JavaCompile compile) {
|
||||
compile.doFirst((task) -> {
|
||||
compile.doFirst(new AdditionalMetadataLocationsConfigurer());
|
||||
}
|
||||
|
||||
private static class AdditionalMetadataLocationsConfigurer implements Action<Task> {
|
||||
|
||||
@Override
|
||||
public void execute(Task task) {
|
||||
if (!(task instanceof JavaCompile)) {
|
||||
return;
|
||||
}
|
||||
JavaCompile compile = (JavaCompile) task;
|
||||
if (hasConfigurationProcessorOnClasspath(compile)) {
|
||||
findMatchingSourceSet(compile).ifPresent(
|
||||
(sourceSet) -> configureAdditionalMetadataLocations(compile,
|
||||
sourceSet));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private Optional<SourceSet> findMatchingSourceSet(JavaCompile compile) {
|
||||
return compile.getProject().getConvention().getPlugin(JavaPluginConvention.class)
|
||||
.getSourceSets().stream().filter((sourceSet) -> sourceSet
|
||||
.getCompileJavaTaskName().equals(compile.getName()))
|
||||
.findFirst();
|
||||
}
|
||||
private boolean hasConfigurationProcessorOnClasspath(JavaCompile compile) {
|
||||
Set<File> files = (compile.getOptions().getAnnotationProcessorPath() != null)
|
||||
? compile.getOptions().getAnnotationProcessorPath().getFiles()
|
||||
: compile.getClasspath().getFiles();
|
||||
return files.stream().map(File::getName).anyMatch(
|
||||
(name) -> name.startsWith("spring-boot-configuration-processor"));
|
||||
}
|
||||
|
||||
private boolean hasConfigurationProcessorOnClasspath(JavaCompile compile) {
|
||||
Set<File> files = (compile.getOptions().getAnnotationProcessorPath() != null)
|
||||
? compile.getOptions().getAnnotationProcessorPath().getFiles()
|
||||
: compile.getClasspath().getFiles();
|
||||
return files.stream().map(File::getName).anyMatch(
|
||||
(name) -> name.startsWith("spring-boot-configuration-processor"));
|
||||
}
|
||||
private Optional<SourceSet> findMatchingSourceSet(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().add(
|
||||
"-Aorg.springframework.boot.configurationprocessor.additionalMetadataLocations="
|
||||
+ locations);
|
||||
}
|
||||
|
||||
private void configureAdditionalMetadataLocations(JavaCompile compile,
|
||||
SourceSet sourceSet) {
|
||||
String locations = StringUtils
|
||||
.collectionToCommaDelimitedString(sourceSet.getResources().getSrcDirs());
|
||||
compile.getOptions().getCompilerArgs().add(
|
||||
"-Aorg.springframework.boot.configurationprocessor.additionalMetadataLocations="
|
||||
+ locations);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user