Automatically configure annotation processing in Eclipse
Closes gh-32236
This commit is contained in:
parent
5e24b5a110
commit
d1810941e8
|
|
@ -25,6 +25,7 @@ ext {
|
|||
dependencies {
|
||||
checkstyle "io.spring.javaformat:spring-javaformat-checkstyle:${javaFormatVersion}"
|
||||
implementation(platform("org.springframework:spring-framework-bom:5.3.15"))
|
||||
implementation("com.diffplug.gradle:goomph:3.37.2")
|
||||
implementation("com.fasterxml.jackson.core:jackson-databind:2.11.4")
|
||||
implementation("commons-codec:commons-codec:1.13")
|
||||
implementation("org.apache.maven:maven-embedder:3.6.2")
|
||||
|
|
@ -91,6 +92,10 @@ gradlePlugin {
|
|||
id = "org.springframework.boot.optional-dependencies"
|
||||
implementationClass = "org.springframework.boot.build.optional.OptionalDependenciesPlugin"
|
||||
}
|
||||
processedAnnotationsPlugin {
|
||||
id = "org.springframework.boot.processed-annotations"
|
||||
implementationClass = "org.springframework.boot.build.processors.ProcessedAnnotationsPlugin"
|
||||
}
|
||||
starterPlugin {
|
||||
id = "org.springframework.boot.starter"
|
||||
implementationClass = "org.springframework.boot.build.starters.StarterPlugin"
|
||||
|
|
|
|||
|
|
@ -57,11 +57,7 @@ public class AutoConfigurationPlugin implements Plugin<Project> {
|
|||
project.getPlugins().apply(DeployedPlugin.class);
|
||||
project.getPlugins().withType(JavaPlugin.class, (javaPlugin) -> {
|
||||
project.getPlugins().apply(ConfigurationPropertiesPlugin.class);
|
||||
Configuration annotationProcessors = project.getConfigurations()
|
||||
.getByName(JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME);
|
||||
annotationProcessors.getDependencies()
|
||||
.add(project.getDependencies().project(Collections.singletonMap("path",
|
||||
":spring-boot-project:spring-boot-tools:spring-boot-autoconfigure-processor")));
|
||||
configureAutoConfigurationAnnotationProcessor(project);
|
||||
project.getTasks().create("autoConfigurationMetadata", AutoConfigurationMetadata.class, (task) -> {
|
||||
SourceSet main = project.getExtensions().getByType(JavaPluginExtension.class).getSourceSets()
|
||||
.getByName(SourceSet.MAIN_SOURCE_SET_NAME);
|
||||
|
|
@ -74,4 +70,11 @@ public class AutoConfigurationPlugin implements Plugin<Project> {
|
|||
});
|
||||
}
|
||||
|
||||
private void configureAutoConfigurationAnnotationProcessor(Project project) {
|
||||
Configuration annotationProcessors = project.getConfigurations()
|
||||
.getByName(JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME);
|
||||
annotationProcessors.getDependencies().add(project.getDependencies().project(Collections.singletonMap("path",
|
||||
":spring-boot-project:spring-boot-tools:spring-boot-autoconfigure-processor")));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import org.gradle.api.tasks.TaskProvider;
|
|||
import org.gradle.api.tasks.compile.JavaCompile;
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin;
|
||||
|
||||
import org.springframework.boot.build.processors.ProcessedAnnotationsPlugin;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
|
|
@ -76,7 +77,7 @@ public class ConfigurationPropertiesPlugin implements Plugin<Project> {
|
|||
@Override
|
||||
public void apply(Project project) {
|
||||
project.getPlugins().withType(JavaPlugin.class, (javaPlugin) -> {
|
||||
addConfigurationProcessorDependency(project);
|
||||
configureConfigurationPropertiesAnnotationProcessor(project);
|
||||
disableIncrementalCompilation(project);
|
||||
configureAdditionalMetadataLocationsCompilerArgument(project);
|
||||
registerCheckAdditionalMetadataTask(project);
|
||||
|
|
@ -85,11 +86,12 @@ public class ConfigurationPropertiesPlugin implements Plugin<Project> {
|
|||
});
|
||||
}
|
||||
|
||||
private void addConfigurationProcessorDependency(Project project) {
|
||||
private void configureConfigurationPropertiesAnnotationProcessor(Project project) {
|
||||
Configuration annotationProcessors = project.getConfigurations()
|
||||
.getByName(JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME);
|
||||
annotationProcessors.getDependencies().add(project.getDependencies().project(Collections.singletonMap("path",
|
||||
":spring-boot-project:spring-boot-tools:spring-boot-configuration-processor")));
|
||||
project.getPlugins().apply(ProcessedAnnotationsPlugin.class);
|
||||
}
|
||||
|
||||
private void disableIncrementalCompilation(Project project) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* Copyright 2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.build.processors;
|
||||
|
||||
import com.diffplug.gradle.eclipse.apt.AptEclipsePlugin;
|
||||
import org.gradle.api.Plugin;
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.plugins.ide.eclipse.model.EclipseModel;
|
||||
|
||||
/**
|
||||
* A plugin for a project that uses one or more annotations processors.
|
||||
*
|
||||
* @author Andy Wilkinson
|
||||
*/
|
||||
public class ProcessedAnnotationsPlugin implements Plugin<Project> {
|
||||
|
||||
@Override
|
||||
public void apply(Project project) {
|
||||
project.getPlugins().apply(AptEclipsePlugin.class);
|
||||
project.getExtensions().getByType(EclipseModel.class).synchronizationTasks("eclipseJdtApt", "eclipseJdt",
|
||||
"eclipseFactorypath");
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue