From eb210571a7395527fcfb14fec2412f7995964732 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Fri, 24 May 2024 11:53:40 +0200 Subject: [PATCH] Remove Picocli Closes gh-1477 --- .../PicocliCodegenBuildCustomizer.java | 48 ------------ ...PicocliProjectGenerationConfiguration.java | 40 ---------- .../dependency/picocli/package-info.java | 20 ----- .../main/resources/META-INF/spring.factories | 1 - start-site/src/main/resources/application.yml | 12 --- .../PicocliCodegenBuildCustomizerTests.java | 77 ------------------- 6 files changed, 198 deletions(-) delete mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/PicocliCodegenBuildCustomizer.java delete mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/PicocliProjectGenerationConfiguration.java delete mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/package-info.java delete mode 100644 start-site/src/test/java/io/spring/start/site/extension/dependency/picocli/PicocliCodegenBuildCustomizerTests.java diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/PicocliCodegenBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/PicocliCodegenBuildCustomizer.java deleted file mode 100644 index 9054e13ba6..0000000000 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/PicocliCodegenBuildCustomizer.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2012-2023 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 io.spring.start.site.extension.dependency.picocli; - -import io.spring.initializr.generator.buildsystem.Build; -import io.spring.initializr.generator.buildsystem.Dependency; -import io.spring.initializr.generator.buildsystem.DependencyScope; -import io.spring.initializr.generator.spring.build.BuildCustomizer; -import io.spring.initializr.generator.version.VersionReference; - -/** - * A {@link BuildCustomizer} that automatically adds "picocli-codegen" when the - * {@code native} dependency is selected in addition to {@code picocli}. - *

- * This annotation processor is required by Picocli to generate the reachability metadata - * for native applications. - * - * @author Brian Clozel - */ -class PicocliCodegenBuildCustomizer implements BuildCustomizer { - - @Override - public void customize(Build build) { - if (build.dependencies().has("native")) { - VersionReference picocliVersion = build.dependencies().get("picocli").getVersion(); - Dependency picocliCodegen = Dependency.withCoordinates("info.picocli", "picocli-codegen") - .scope(DependencyScope.ANNOTATION_PROCESSOR) - .version(picocliVersion) - .build(); - build.dependencies().add("picocli-codegen", picocliCodegen); - } - } - -} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/PicocliProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/PicocliProjectGenerationConfiguration.java deleted file mode 100644 index 20a66a86d8..0000000000 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/PicocliProjectGenerationConfiguration.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2012-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 io.spring.start.site.extension.dependency.picocli; - -import io.spring.initializr.generator.condition.ConditionalOnPlatformVersion; -import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency; -import io.spring.initializr.generator.project.ProjectGenerationConfiguration; - -import org.springframework.context.annotation.Bean; - -/** - * Configuration for generation of projects that use observability. - * - * @author Brian Clozel - */ -@ProjectGenerationConfiguration -@ConditionalOnRequestedDependency("picocli") -@ConditionalOnPlatformVersion("3.0.0-M1") -public class PicocliProjectGenerationConfiguration { - - @Bean - PicocliCodegenBuildCustomizer picocliCodegenBuildCustomizer() { - return new PicocliCodegenBuildCustomizer(); - } - -} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/package-info.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/package-info.java deleted file mode 100644 index eb88fcb9a9..0000000000 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/picocli/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2012-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. - */ - -/** - * Extensions for generation of projects that depend on Picocli. - */ -package io.spring.start.site.extension.dependency.picocli; diff --git a/start-site/src/main/resources/META-INF/spring.factories b/start-site/src/main/resources/META-INF/spring.factories index b02845bcb6..181db41f02 100644 --- a/start-site/src/main/resources/META-INF/spring.factories +++ b/start-site/src/main/resources/META-INF/spring.factories @@ -20,7 +20,6 @@ io.spring.start.site.extension.dependency.mysql.MysqlProjectGenerationConfigurat io.spring.start.site.extension.dependency.neo4j.Neo4jProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.observability.ObservabilityProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.oracle.OracleProjectGenerationConfiguration,\ -io.spring.start.site.extension.dependency.picocli.PicocliProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.postgresql.PgVectorProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.postgresql.PostgresqlProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.redis.RedisProjectGenerationConfiguration,\ diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 28aee36ea3..0de6deebaf 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -882,18 +882,6 @@ initializr: description: Caching Data with Spring - rel: reference href: https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/index.html#io.caching - - name: Picocli - id: picocli - groupId: info.picocli - artifactId: picocli-spring-boot-starter - compatibilityRange: "[3.0.0,3.2.0-M1)" - description: Build command line applications with picocli. - mappings: - - compatibilityRange: "[3.0.0,3.2.0-M1)" - version: 4.7.5 - links: - - rel: reference - href: https://picocli.info/#_spring_boot_example - name: Spring Shell id: spring-shell groupId: org.springframework.shell diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/picocli/PicocliCodegenBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/picocli/PicocliCodegenBuildCustomizerTests.java deleted file mode 100644 index d2aa0c5b37..0000000000 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/picocli/PicocliCodegenBuildCustomizerTests.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2012-2023 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 io.spring.start.site.extension.dependency.picocli; - -import io.spring.initializr.generator.version.Version; -import io.spring.initializr.metadata.Dependency; -import io.spring.initializr.web.project.ProjectRequest; -import io.spring.start.site.extension.AbstractExtensionTests; -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Tests for {@link PicocliCodegenBuildCustomizer}. - * - * @author Brian Clozel - */ -class PicocliCodegenBuildCustomizerTests extends AbstractExtensionTests { - - private static final Version SPRING_BOOT_3_VERSION = Version.parse("3.1.0"); - - @Test - void picocliCodegenIsAddedAsMavenOptionalDependency() { - ProjectRequest request = createProjectRequest("picocli", "native"); - request.setBootVersion(SPRING_BOOT_3_VERSION.toString()); - assertThat(mavenPom(request)).hasDependency(getPicocli(SPRING_BOOT_3_VERSION)) - .hasDependency(getPicocliCodegen(SPRING_BOOT_3_VERSION)) - .hasText("/project/dependencies/dependency[2]/optional", "true"); - } - - @Test - void picocliCodegenIsNotAddedAsMavenDependencyIfNativeNotSelected() { - ProjectRequest request = createProjectRequest("picocli"); - request.setBootVersion(SPRING_BOOT_3_VERSION.toString()); - assertThat(mavenPom(request)).hasDependency(getDependency("picocli")) - .doesNotHaveDependency("info.picocli", "picocli-codegen"); - } - - @Test - void picocliCodegenIsAddedAsGradleAnnotationProcessor() { - ProjectRequest request = createProjectRequest("picocli", "native"); - request.setBootVersion(SPRING_BOOT_3_VERSION.toString()); - assertThat(gradleBuild(request)).contains("annotationProcessor 'info.picocli:picocli-codegen:" - + getPicocli(SPRING_BOOT_3_VERSION).getVersion() + "'"); - } - - @Test - void picocliCodegenIsNotAddedAsGradleAnnotationProcessorIfNativeNotSelected() { - ProjectRequest request = createProjectRequest("picocli"); - request.setBootVersion(SPRING_BOOT_3_VERSION.toString()); - assertThat(gradleBuild(request)).doesNotContain("info.picocli:picocli-codegen"); - } - - private Dependency getPicocli(Version springBootVersion) { - return getDependency("picocli").resolve(springBootVersion); - } - - private Dependency getPicocliCodegen(Version springBootVersion) { - return Dependency.create("info.picocli", "picocli-codegen", getPicocli(springBootVersion).getVersion(), - Dependency.SCOPE_COMPILE); - } - -}