Skip to content

Commit a579694

Browse files
committed
Only convert annotation processors when creating Java projects
See gh-1781
1 parent 845717e commit a579694

File tree

3 files changed

+69
-3
lines changed

3 files changed

+69
-3
lines changed

initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/maven/ConvertAnnotationProcessorsToPluginConfigBuildCustomizer.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
import io.spring.initializr.generator.buildsystem.Dependency;
2525
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
2626
import io.spring.initializr.generator.buildsystem.maven.MavenPluginContainer;
27+
import io.spring.initializr.generator.language.Language;
28+
import io.spring.initializr.generator.language.java.JavaLanguage;
29+
import io.spring.initializr.generator.project.ProjectDescription;
2730
import io.spring.initializr.generator.spring.build.BuildCustomizer;
2831
import io.spring.initializr.generator.version.VersionProperty;
2932
import io.spring.initializr.generator.version.VersionReference;
@@ -40,8 +43,17 @@
4043
*/
4144
class ConvertAnnotationProcessorsToPluginConfigBuildCustomizer implements BuildCustomizer<MavenBuild> {
4245

46+
private final ProjectDescription projectDescription;
47+
48+
ConvertAnnotationProcessorsToPluginConfigBuildCustomizer(ProjectDescription projectDescription) {
49+
this.projectDescription = projectDescription;
50+
}
51+
4352
@Override
4453
public void customize(MavenBuild build) {
54+
if (!isJava()) {
55+
return;
56+
}
4557
Set<String> ids = build.dependencies().ids().collect(Collectors.toSet());
4658
List<Dependency> annotationProcessors = new ArrayList<>();
4759
List<Dependency> testAnnotationProcessors = new ArrayList<>();
@@ -120,6 +132,14 @@ private void configureCompilerPlugin(MavenPluginContainer plugins, List<Dependen
120132
return versionReference.getValue();
121133
}
122134

135+
private boolean isJava() {
136+
Language language = this.projectDescription.getLanguage();
137+
if (language == null) {
138+
return false;
139+
}
140+
return language.id().equals(JavaLanguage.ID);
141+
}
142+
123143
@Override
124144
public int getOrder() {
125145
return Ordered.LOWEST_PRECEDENCE;

initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/maven/MavenProjectGenerationConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,9 @@ public BuildCustomizer<MavenBuild> mavenWarPackagingConfigurer() {
9090
}
9191

9292
@Bean
93-
ConvertAnnotationProcessorsToPluginConfigBuildCustomizer convertAnnotationProcessorsToPluginConfigBuildCustomizer() {
94-
return new ConvertAnnotationProcessorsToPluginConfigBuildCustomizer();
93+
ConvertAnnotationProcessorsToPluginConfigBuildCustomizer convertAnnotationProcessorsToPluginConfigBuildCustomizer(
94+
ProjectDescription projectDescription) {
95+
return new ConvertAnnotationProcessorsToPluginConfigBuildCustomizer(projectDescription);
9596
}
9697

9798
}

initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/maven/ConvertAnnotationProcessorsToPluginConfigBuildCustomizerTests.java

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,11 @@
2323
import io.spring.initializr.generator.buildsystem.DependencyScope;
2424
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
2525
import io.spring.initializr.generator.io.IndentingWriterFactory;
26+
import io.spring.initializr.generator.language.Language;
27+
import io.spring.initializr.generator.project.MutableProjectDescription;
2628
import io.spring.initializr.generator.version.VersionProperty;
2729
import io.spring.initializr.generator.version.VersionReference;
30+
import org.junit.jupiter.api.BeforeEach;
2831
import org.junit.jupiter.api.Test;
2932

3033
import static org.assertj.core.api.Assertions.assertThat;
@@ -36,7 +39,14 @@
3639
*/
3740
class ConvertAnnotationProcessorsToPluginConfigBuildCustomizerTests {
3841

39-
private final ConvertAnnotationProcessorsToPluginConfigBuildCustomizer customizer = new ConvertAnnotationProcessorsToPluginConfigBuildCustomizer();
42+
private ConvertAnnotationProcessorsToPluginConfigBuildCustomizer customizer;
43+
44+
@BeforeEach
45+
void setUp() {
46+
MutableProjectDescription projectDescription = new MutableProjectDescription();
47+
projectDescription.setLanguage(Language.forId("java", "17"));
48+
this.customizer = new ConvertAnnotationProcessorsToPluginConfigBuildCustomizer(projectDescription);
49+
}
4050

4151
@Test
4252
void annotationProcessorIsConvertedToDefaultCompileExecution() throws IOException {
@@ -358,6 +368,41 @@ void annotationProcessorWithExclusionsHasExclusionsInPath() throws IOException {
358368
""");
359369
}
360370

371+
@Test
372+
void annotationProcessorIsNotConvertedForNonJavaLanguage() throws IOException {
373+
MutableProjectDescription projectDescription = new MutableProjectDescription();
374+
projectDescription.setLanguage(Language.forId("kotlin", "17"));
375+
ConvertAnnotationProcessorsToPluginConfigBuildCustomizer kotlinCustomizer = new ConvertAnnotationProcessorsToPluginConfigBuildCustomizer(
376+
projectDescription);
377+
MavenBuild build = new MavenBuild();
378+
build.dependencies()
379+
.add("configuration-processor",
380+
Dependency.withCoordinates("org.springframework.boot", "spring-boot-configuration-processor")
381+
.scope(DependencyScope.ANNOTATION_PROCESSOR)
382+
.build());
383+
kotlinCustomizer.customize(build);
384+
String pom = generatePom(build);
385+
assertThat(pom).contains("<dependency>");
386+
assertThat(pom).doesNotContain("<annotationProcessorPaths>");
387+
}
388+
389+
@Test
390+
void annotationProcessorIsNotConvertedWhenLanguageIsNull() throws IOException {
391+
MutableProjectDescription projectDescription = new MutableProjectDescription();
392+
ConvertAnnotationProcessorsToPluginConfigBuildCustomizer nullLanguageCustomizer = new ConvertAnnotationProcessorsToPluginConfigBuildCustomizer(
393+
projectDescription);
394+
MavenBuild build = new MavenBuild();
395+
build.dependencies()
396+
.add("configuration-processor",
397+
Dependency.withCoordinates("org.springframework.boot", "spring-boot-configuration-processor")
398+
.scope(DependencyScope.ANNOTATION_PROCESSOR)
399+
.build());
400+
nullLanguageCustomizer.customize(build);
401+
String pom = generatePom(build);
402+
assertThat(pom).contains("<dependency>");
403+
assertThat(pom).doesNotContain("<annotationProcessorPaths>");
404+
}
405+
361406
private String generatePom(MavenBuild build) throws IOException {
362407
StringWriter writer = new StringWriter();
363408
new MavenBuildProjectContributor(build, IndentingWriterFactory.withDefaultSettings()).writeBuild(writer);

0 commit comments

Comments
 (0)