From e6e69bb6961e016ab70bce5c229af9fb4f2b4143 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Mon, 3 Jun 2024 10:05:19 +0200 Subject: [PATCH] Add vaadin-dev exclusion to Maven profile Closes gh-1492 --- .../vaadin/VaadinMavenBuildCustomizer.java | 13 +++- .../VaadinMavenBuildCustomizerTests.java | 76 +++++++++++++++++++ ...inProjectGenerationConfigurationTests.java | 55 ++++++++++---- 3 files changed, 125 insertions(+), 19 deletions(-) create mode 100644 start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizerTests.java diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizer.java index a1889d1822..740cde0ae4 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizer.java @@ -16,7 +16,9 @@ package io.spring.start.site.extension.dependency.vaadin; +import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.maven.MavenBuild; +import io.spring.initializr.generator.buildsystem.maven.MavenProfile; import io.spring.initializr.generator.spring.build.BuildCustomizer; /** @@ -24,14 +26,19 @@ * mode. * * @author Stephane Nicoll + * @author Moritz Halbritter */ class VaadinMavenBuildCustomizer implements BuildCustomizer { @Override public void customize(MavenBuild build) { - build.profiles() - .id("production") - .plugins() + MavenProfile profile = build.profiles().id("production"); + profile.dependencies() + .add("vaadin-core", + Dependency.withCoordinates("com.vaadin", "vaadin-core") + .exclusions(new Dependency.Exclusion("com.vaadin", "vaadin-dev")) + .build()); + profile.plugins() .add("com.vaadin", "vaadin-maven-plugin", (plugin) -> plugin.version("${vaadin.version}") .execution("frontend", (execution) -> execution.goal("prepare-frontend").goal("build-frontend").phase("compile"))); diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizerTests.java new file mode 100644 index 0000000000..f9ffe3ea94 --- /dev/null +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizerTests.java @@ -0,0 +1,76 @@ +/* + * Copyright 2012-2024 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.vaadin; + +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 VaadinMavenBuildCustomizer}. + * + * @author Moritz Halbritter + */ +class VaadinMavenBuildCustomizerTests extends AbstractExtensionTests { + + @Test + void shouldAddProductionProfile() { + ProjectRequest projectRequest = createProjectRequest("vaadin", "web"); + assertThat(mavenPom(projectRequest)).hasProfile("production").lines().containsSequence( + // @formatter:off + " ", + " production", + " ", + " ", + " com.vaadin", + " vaadin-core", + " ", + " ", + " com.vaadin", + " vaadin-dev", + " ", + " ", + " ", + "", + " ", + " ", + " ", + " ", + " com.vaadin", + " vaadin-maven-plugin", + " ${vaadin.version}", + " ", + " ", + " frontend", + " compile", + " ", + " prepare-frontend", + " build-frontend", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ); + // @formatter:on + } + +} diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java index 4c6b9d3134..1cc693cab1 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java @@ -30,27 +30,50 @@ */ class VaadinProjectGenerationConfigurationTests extends AbstractExtensionTests { - private static final String SPRING_BOOT_VERSION = "3.2.0"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; @Test void mavenBuildWithVaadinAddProductionProfileWithoutProductionModeFlag() { ProjectRequest request = createProjectRequest("vaadin", "data-jpa"); request.setBootVersion(SPRING_BOOT_VERSION); - assertThat(mavenPom(request)).hasProfile("production") - .lines() - .containsSequence(" ", " production", " ", - " ", " ", - " com.vaadin", - " vaadin-maven-plugin", - " ${vaadin.version}", - " ", " ", - " frontend", - " compile", " ", - " prepare-frontend", - " build-frontend", - " ", " ", - " ", " ", " ", - " ", " "); + assertThat(mavenPom(request)).hasProfile("production").lines().containsSequence( + // @formatter:off + " ", + " production", + " ", + " ", + " com.vaadin", + " vaadin-core", + " ", + " ", + " com.vaadin", + " vaadin-dev", + " ", + " ", + " ", + "", + " ", + " ", + " ", + " ", + " com.vaadin", + " vaadin-maven-plugin", + " ${vaadin.version}", + " ", + " ", + " frontend", + " compile", + " ", + " prepare-frontend", + " build-frontend", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ); } @Test