From b8cac0407bacf62b02c6078e20df95480abdcf65 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 22 May 2019 15:44:30 +0200 Subject: [PATCH] Add dependency builder This commit adds a builder for Dependency to allow it to be further tuned without having to add an extra constructor. --- .../BuildProjectGenerationConfiguration.java | 10 +- .../kotlin/KotlinDependenciesConfigurer.java | 12 ++- .../build/SimpleBuildCustomizerTests.java | 7 +- ...tsProjectGenerationConfigurationTests.java | 3 +- ...leProjectGenerationConfigurationTests.java | 3 +- .../generator/buildsystem/Dependency.java | 96 ++++++++++++++----- .../buildsystem/DependencyContainer.java | 54 ++--------- .../DependencyComparatorTests.java | 18 ++-- .../buildsystem/DependencyContainerTests.java | 6 +- .../gradle/Gradle3BuildWriterTests.java | 12 ++- .../GroovyDslGradleBuildWriterTests.java | 36 ++++--- .../KotlinDslGradleBuildWriterTests.java | 36 ++++--- .../maven/MavenBuildWriterTests.java | 15 +-- .../support/MetadataBuildItemMapper.java | 7 +- 14 files changed, 178 insertions(+), 137 deletions(-) diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java index 594cc491..745ab5cd 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/build/BuildProjectGenerationConfiguration.java @@ -17,6 +17,7 @@ package io.spring.initializr.generator.spring.build; import io.spring.initializr.generator.buildsystem.Build; +import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.Dependency.Exclusion; import io.spring.initializr.generator.buildsystem.DependencyScope; import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem; @@ -56,10 +57,11 @@ public class BuildProjectGenerationConfiguration { @Bean @ConditionalOnPlatformVersion("2.2.0.M3") public BuildCustomizer junitJupiterTestStarterContributor() { - return (build) -> build.dependencies().add("test", "org.springframework.boot", - "spring-boot-starter-test", null, DependencyScope.TEST_COMPILE, null, - new Exclusion("org.junit.vintage", "junit-vintage-engine"), - new Exclusion("junit", "junit")); + return (build) -> build.dependencies().add("test", Dependency + .withCoordinates("org.springframework.boot", "spring-boot-starter-test") + .scope(DependencyScope.TEST_COMPILE) + .exclusions(new Exclusion("org.junit.vintage", "junit-vintage-engine"), + new Exclusion("junit", "junit"))); } @Bean diff --git a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDependenciesConfigurer.java b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDependenciesConfigurer.java index 7410b2c3..ba0c57d1 100644 --- a/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDependenciesConfigurer.java +++ b/initializr-generator-spring/src/main/java/io/spring/initializr/generator/spring/code/kotlin/KotlinDependenciesConfigurer.java @@ -17,6 +17,7 @@ package io.spring.initializr.generator.spring.code.kotlin; 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.buildsystem.maven.MavenBuild; import io.spring.initializr.generator.spring.build.BuildCustomizer; @@ -40,10 +41,13 @@ class KotlinDependenciesConfigurer implements BuildCustomizer { @Override public void customize(Build build) { VersionReference version = determineDependencyVersion(build); - build.dependencies().add("kotlin-stdlib", "org.jetbrains.kotlin", - "kotlin-stdlib-jdk8", version, DependencyScope.COMPILE); - build.dependencies().add("kotlin-reflect", "org.jetbrains.kotlin", - "kotlin-reflect", version, DependencyScope.COMPILE); + build.dependencies() + .add("kotlin-stdlib", Dependency + .withCoordinates("org.jetbrains.kotlin", "kotlin-stdlib-jdk8") + .version(version).scope(DependencyScope.COMPILE)); + build.dependencies().add("kotlin-reflect", + Dependency.withCoordinates("org.jetbrains.kotlin", "kotlin-reflect") + .version(version).scope(DependencyScope.COMPILE)); } private VersionReference determineDependencyVersion(Build build) { diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizerTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizerTests.java index 807effcd..0e721547 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizerTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/SimpleBuildCustomizerTests.java @@ -64,9 +64,10 @@ class SimpleBuildCustomizerTests { @Test void customizeDependencies() { ProjectDescription description = initializeDescription(); - Dependency one = new Dependency("com.example", "one", DependencyScope.COMPILE); - Dependency two = new Dependency("com.example.acme", "two", - DependencyScope.COMPILE); + Dependency one = Dependency.withCoordinates("com.example", "one") + .scope(DependencyScope.COMPILE).build(); + Dependency two = Dependency.withCoordinates("com.example.acme", "two") + .scope(DependencyScope.COMPILE).build(); description.addDependency("two", two); description.addDependency("one", one); MavenBuild build = customizeBuild(description); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java index 1acad7f5..1c3e1bdb 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleKtsProjectGenerationConfigurationTests.java @@ -117,7 +117,8 @@ class GradleKtsProjectGenerationConfigurationTests { description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); description.setLanguage(new JavaLanguage("11")); description.addDependency("acme", - new Dependency("com.example", "acme", DependencyScope.COMPILE)); + Dependency.withCoordinates("com.example", "acme") + .scope(DependencyScope.COMPILE).build()); ProjectStructure projectStructure = this.projectTester.generate(description); assertThat(projectStructure.getRelativePathsOfProjectFiles()) .contains("build.gradle.kts"); diff --git a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java index d5648ad9..d1283a9a 100644 --- a/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java +++ b/initializr-generator-spring/src/test/java/io/spring/initializr/generator/spring/build/gradle/GradleProjectGenerationConfigurationTests.java @@ -121,7 +121,8 @@ class GradleProjectGenerationConfigurationTests { description.setPlatformVersion(Version.parse("2.1.0.RELEASE")); description.setLanguage(new JavaLanguage("11")); description.addDependency("acme", - new Dependency("com.example", "acme", DependencyScope.COMPILE)); + Dependency.withCoordinates("com.example", "acme") + .scope(DependencyScope.COMPILE).build()); ProjectStructure projectStructure = this.projectTester.generate(description); List relativePaths = projectStructure.getRelativePathsOfProjectFiles(); assertThat(relativePaths).contains("build.gradle"); diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/Dependency.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/Dependency.java index 4d57ebfd..3bf77deb 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/Dependency.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/Dependency.java @@ -16,7 +16,8 @@ package io.spring.initializr.generator.buildsystem; -import java.util.Collections; +import java.util.Arrays; +import java.util.LinkedHashSet; import java.util.Objects; import java.util.Set; @@ -44,32 +45,17 @@ public class Dependency { private final Set exclusions; - public Dependency(String groupId, String artifactId) { - this(groupId, artifactId, DependencyScope.COMPILE); + Dependency(Builder builder) { + this.groupId = builder.groupId; + this.artifactId = builder.artifactId; + this.version = builder.version; + this.scope = builder.scope; + this.type = builder.type; + this.exclusions = new LinkedHashSet<>(builder.exclusions); } - public Dependency(String groupId, String artifactId, DependencyScope scope) { - this(groupId, artifactId, null, scope); - } - - public Dependency(String groupId, String artifactId, VersionReference version, - DependencyScope scope) { - this(groupId, artifactId, version, scope, null); - } - - public Dependency(String groupId, String artifactId, VersionReference version, - DependencyScope scope, String type) { - this(groupId, artifactId, version, scope, type, null); - } - - public Dependency(String groupId, String artifactId, VersionReference version, - DependencyScope scope, String type, Set exclusions) { - this.groupId = groupId; - this.artifactId = artifactId; - this.version = version; - this.scope = scope; - this.type = type; - this.exclusions = (exclusions != null) ? exclusions : Collections.emptySet(); + public static Builder withCoordinates(String groupId, String artifactId) { + return new Builder(groupId, artifactId); } /** @@ -122,6 +108,66 @@ public class Dependency { return this.exclusions; } + /** + * Builder for a dependency. + * + * @see Dependency#withCoordinates(String, String) + */ + public static final class Builder { + + private String groupId; + + private String artifactId; + + private VersionReference version; + + private DependencyScope scope; + + private String type; + + private Set exclusions = new LinkedHashSet<>(); + + private Builder(String groupId, String artifactId) { + this.groupId = groupId; + this.artifactId = artifactId; + } + + public Builder groupId(String groupId) { + this.groupId = groupId; + return this; + } + + public Builder artifactId(String artifactId) { + this.artifactId = artifactId; + return this; + } + + public Builder version(VersionReference version) { + this.version = version; + return this; + } + + public Builder scope(DependencyScope scope) { + this.scope = scope; + return this; + } + + public Builder type(String type) { + this.type = type; + return this; + } + + public Builder exclusions(Exclusion... exclusions) { + this.exclusions = new LinkedHashSet<>(Arrays.asList(exclusions)); + return this; + } + + public Dependency build() { + return new Dependency(this); + } + + } + /** * Define the reference to a transitive dependency to exclude. */ diff --git a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/DependencyContainer.java b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/DependencyContainer.java index 4d6f758e..302173fd 100644 --- a/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/DependencyContainer.java +++ b/initializr-generator/src/main/java/io/spring/initializr/generator/buildsystem/DependencyContainer.java @@ -16,14 +16,9 @@ package io.spring.initializr.generator.buildsystem; -import java.util.Arrays; import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.function.Function; -import io.spring.initializr.generator.buildsystem.Dependency.Exclusion; -import io.spring.initializr.generator.version.VersionReference; - /** * A {@link BuildItemContainer} implementation for dependencies. * @@ -43,54 +38,17 @@ public class DependencyContainer extends BuildItemContainer * @param scope the {@link DependencyScope} */ public void add(String id, String groupId, String artifactId, DependencyScope scope) { - add(id, new Dependency(groupId, artifactId, scope)); + add(id, Dependency.withCoordinates(groupId, artifactId).scope(scope)); } /** - * Register a {@link Dependency} with the specified {@code id}, version and - * {@link DependencyScope scope}. + * Register a {@link Dependency} with the specified {@code id} and + * {@link Dependency.Builder state}. * @param id the id of the dependency - * @param groupId the groupId - * @param artifactId the artifactId - * @param version the {@link VersionReference} - * @param scope the {@link DependencyScope} + * @param builder the state of the dependency */ - public void add(String id, String groupId, String artifactId, - VersionReference version, DependencyScope scope) { - add(id, new Dependency(groupId, artifactId, version, scope)); - } - - /** - * Register a {@link Dependency} with the specified {@code id}, version, - * {@link DependencyScope scope} and type. - * @param id the id of the dependency - * @param groupId the groupId - * @param artifactId the artifactId - * @param version the {@link VersionReference} - * @param scope the {@link DependencyScope} - * @param type the artifact type - */ - public void add(String id, String groupId, String artifactId, - VersionReference version, DependencyScope scope, String type) { - add(id, new Dependency(groupId, artifactId, version, scope, type)); - } - - /** - * Register a {@link Dependency} with the specified {@code id}, version, - * {@link DependencyScope scope}, type and exclusions. - * @param id the id of the dependency - * @param groupId the groupId - * @param artifactId the artifactId - * @param version the {@link VersionReference} - * @param scope the {@link DependencyScope} - * @param type the artifact type - * @param exclusions the exclusion(s) to apply - */ - public void add(String id, String groupId, String artifactId, - VersionReference version, DependencyScope scope, String type, - Exclusion... exclusions) { - add(id, new Dependency(groupId, artifactId, version, scope, type, - new LinkedHashSet<>(Arrays.asList(exclusions)))); + public void add(String id, Dependency.Builder builder) { + add(id, builder.build()); } } diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/DependencyComparatorTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/DependencyComparatorTests.java index b040fb4d..9b6f3cba 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/DependencyComparatorTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/DependencyComparatorTests.java @@ -27,16 +27,17 @@ import static org.assertj.core.api.Assertions.assertThat; */ class DependencyComparatorTests { - private static final Dependency SPRING_BOOT_A = new Dependency( - "org.springframework.boot", "spring-boot-a"); + private static final Dependency SPRING_BOOT_A = Dependency + .withCoordinates("org.springframework.boot", "spring-boot-a").build(); - private static final Dependency SPRING_BOOT_B = new Dependency( - "org.springframework.boot", "spring-boot-b"); + private static final Dependency SPRING_BOOT_B = Dependency + .withCoordinates("org.springframework.boot", "spring-boot-b").build(); - private static final Dependency LIB_ALPHA = new Dependency("com.example.alpha", - "test"); + private static final Dependency LIB_ALPHA = Dependency + .withCoordinates("com.example.alpha", "test").build(); - private static final Dependency LIB_BETA = new Dependency("com.example.beta", "test"); + private static final Dependency LIB_BETA = Dependency + .withCoordinates("com.example.beta", "test").build(); private final DependencyComparator comparator = new DependencyComparator(); @@ -63,7 +64,8 @@ class DependencyComparatorTests { @Test void compareLibSameGroupId() { assertThat(this.comparator.compare(LIB_BETA, - new Dependency("com.example.beta", "a"))).isPositive(); + Dependency.withCoordinates("com.example.beta", "a").build())) + .isPositive(); } } diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/DependencyContainerTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/DependencyContainerTests.java index 1e5ca5e4..75345cba 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/DependencyContainerTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/DependencyContainerTests.java @@ -48,8 +48,10 @@ class DependencyContainerTests { @Test void addDependencyWithVersion() { DependencyContainer container = createTestContainer(); - container.add("custom", "com.example", "acme", VersionReference.ofValue("1.0.0"), - DependencyScope.COMPILE); + container.add("custom", + Dependency.withCoordinates("com.example", "acme") + .version(VersionReference.ofValue("1.0.0")) + .scope(DependencyScope.COMPILE)); assertThat(container.ids()).containsOnly("custom"); assertThat(container.items()).hasSize(1); assertThat(container.isEmpty()).isFalse(); diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/Gradle3BuildWriterTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/Gradle3BuildWriterTests.java index 6d68110a..09eefacd 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/Gradle3BuildWriterTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/Gradle3BuildWriterTests.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.StringWriter; import java.util.List; +import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.DependencyScope; import io.spring.initializr.generator.io.IndentingWriter; import io.spring.initializr.generator.test.io.TextTestUtils; @@ -60,8 +61,10 @@ class Gradle3BuildWriterTests { @Test void gradleBuildWithRuntimeDependency() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("driver", "com.example", "jdbc-driver", - VersionReference.ofValue("1.0.0"), DependencyScope.RUNTIME); + build.dependencies().add("driver", + Dependency.withCoordinates("com.example", "jdbc-driver") + .version(VersionReference.ofValue("1.0.0")) + .scope(DependencyScope.RUNTIME)); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " runtime 'com.example:jdbc-driver:1.0.0'", "}"); @@ -113,8 +116,9 @@ class Gradle3BuildWriterTests { @Test void gradleBuildWithNonNullArtifactTypeDependency() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("root", "org.springframework.boot", - "spring-boot-starter", null, DependencyScope.COMPILE, "tar.gz"); + build.dependencies().add("root", Dependency + .withCoordinates("org.springframework.boot", "spring-boot-starter") + .scope(DependencyScope.COMPILE).type("tar.gz")); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " compile 'org.springframework.boot:spring-boot-starter@tar.gz'", "}"); diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriterTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriterTests.java index 0fefc7ec..1611e6ae 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriterTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/GroovyDslGradleBuildWriterTests.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.StringWriter; import java.util.List; +import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.Dependency.Exclusion; import io.spring.initializr.generator.buildsystem.DependencyScope; import io.spring.initializr.generator.io.IndentingWriter; @@ -246,9 +247,10 @@ class GroovyDslGradleBuildWriterTests { @Test void gradleBuildWithVersionedDependency() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("kotlin-stdlib", "org.jetbrains.kotlin", - "kotlin-stdlib-jdk8", VersionReference.ofProperty("kotlin.version"), - DependencyScope.COMPILE); + build.dependencies().add("kotlin-stdlib", + Dependency.withCoordinates("org.jetbrains.kotlin", "kotlin-stdlib-jdk8") + .version(VersionReference.ofProperty("kotlin.version")) + .scope(DependencyScope.COMPILE)); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " implementation \"org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}\"", @@ -258,9 +260,11 @@ class GroovyDslGradleBuildWriterTests { @Test void gradleBuildWithExternalVersionedDependency() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("acme", "com.example", "acme", - VersionReference.ofProperty(VersionProperty.of("acme.version", false)), - DependencyScope.COMPILE); + build.dependencies().add("acme", + Dependency.withCoordinates("com.example", "acme") + .version(VersionReference + .ofProperty(VersionProperty.of("acme.version", false))) + .scope(DependencyScope.COMPILE)); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " implementation \"com.example:acme:${property('acme.version')}\"", @@ -339,8 +343,10 @@ class GroovyDslGradleBuildWriterTests { @Test void gradleBuildWithRuntimeDependency() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("driver", "com.example", "jdbc-driver", - VersionReference.ofValue("1.0.0"), DependencyScope.RUNTIME); + build.dependencies().add("driver", + Dependency.withCoordinates("com.example", "jdbc-driver") + .version(VersionReference.ofValue("1.0.0")) + .scope(DependencyScope.RUNTIME)); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " runtimeOnly 'com.example:jdbc-driver:1.0.0'", "}"); @@ -393,10 +399,11 @@ class GroovyDslGradleBuildWriterTests { @Test void gradleBuildWithExclusions() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("test", "com.example", "test", null, - DependencyScope.COMPILE, null, - new Exclusion("com.example.legacy", "legacy-one"), - new Exclusion("com.example.another", "legacy-two")); + build.dependencies().add("test", + Dependency.withCoordinates("com.example", "test") + .scope(DependencyScope.COMPILE) + .exclusions(new Exclusion("com.example.legacy", "legacy-one"), + new Exclusion("com.example.another", "legacy-two"))); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " implementation('com.example:test') {", @@ -408,8 +415,9 @@ class GroovyDslGradleBuildWriterTests { @Test void gradleBuildWithNonNullArtifactTypeDependency() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("root", "org.springframework.boot", - "spring-boot-starter", null, DependencyScope.COMPILE, "tar.gz"); + build.dependencies().add("root", Dependency + .withCoordinates("org.springframework.boot", "spring-boot-starter") + .scope(DependencyScope.COMPILE).type("tar.gz")); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " implementation 'org.springframework.boot:spring-boot-starter@tar.gz'", diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriterTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriterTests.java index d6abcf1d..3f533b1e 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriterTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/gradle/KotlinDslGradleBuildWriterTests.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.StringWriter; import java.util.List; +import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.Dependency.Exclusion; import io.spring.initializr.generator.buildsystem.DependencyScope; import io.spring.initializr.generator.io.IndentingWriter; @@ -247,9 +248,10 @@ class KotlinDslGradleBuildWriterTests { @Test void gradleBuildWithVersionedDependency() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("kotlin-stdlib", "org.jetbrains.kotlin", - "kotlin-stdlib-jdk8", VersionReference.ofProperty("kotlin.version"), - DependencyScope.COMPILE); + build.dependencies().add("kotlin-stdlib", + Dependency.withCoordinates("org.jetbrains.kotlin", "kotlin-stdlib-jdk8") + .version(VersionReference.ofProperty("kotlin.version")) + .scope(DependencyScope.COMPILE)); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " implementation(\"org.jetbrains.kotlin:kotlin-stdlib-jdk8:${property(\"kotlinVersion\")}\")", @@ -259,9 +261,11 @@ class KotlinDslGradleBuildWriterTests { @Test void gradleBuildWithExternalVersionedDependency() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("acme", "com.example", "acme", - VersionReference.ofProperty(VersionProperty.of("acme.version", false)), - DependencyScope.COMPILE); + build.dependencies().add("acme", + Dependency.withCoordinates("com.example", "acme") + .version(VersionReference + .ofProperty(VersionProperty.of("acme.version", false))) + .scope(DependencyScope.COMPILE)); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " implementation(\"com.example:acme:${property(\"acme.version\")}\")", @@ -343,8 +347,10 @@ class KotlinDslGradleBuildWriterTests { @Test void gradleBuildWithRuntimeDependency() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("driver", "com.example", "jdbc-driver", - VersionReference.ofValue("1.0.0"), DependencyScope.RUNTIME); + build.dependencies().add("driver", + Dependency.withCoordinates("com.example", "jdbc-driver") + .version(VersionReference.ofValue("1.0.0")) + .scope(DependencyScope.RUNTIME)); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " runtimeOnly(\"com.example:jdbc-driver:1.0.0\")", "}"); @@ -397,10 +403,11 @@ class KotlinDslGradleBuildWriterTests { @Test void gradleBuildWithExclusions() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("test", "com.example", "test", null, - DependencyScope.COMPILE, null, - new Exclusion("com.example.legacy", "legacy-one"), - new Exclusion("com.example.another", "legacy-two")); + build.dependencies().add("test", + Dependency.withCoordinates("com.example", "test") + .scope(DependencyScope.COMPILE) + .exclusions(new Exclusion("com.example.legacy", "legacy-one"), + new Exclusion("com.example.another", "legacy-two"))); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " implementation(\"com.example:test\") {", @@ -412,8 +419,9 @@ class KotlinDslGradleBuildWriterTests { @Test void gradleBuildWithNonNullArtifactTypeDependency() throws IOException { GradleBuild build = new GradleBuild(); - build.dependencies().add("root", "org.springframework.boot", - "spring-boot-starter", null, DependencyScope.COMPILE, "tar.gz"); + build.dependencies().add("root", Dependency + .withCoordinates("org.springframework.boot", "spring-boot-starter") + .scope(DependencyScope.COMPILE).type("tar.gz")); List lines = generateBuild(build); assertThat(lines).containsSequence("dependencies {", " implementation(\"org.springframework.boot:spring-boot-starter@tar.gz\")", diff --git a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriterTests.java b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriterTests.java index ed660246..d1885549 100644 --- a/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriterTests.java +++ b/initializr-generator/src/test/java/io/spring/initializr/generator/buildsystem/maven/MavenBuildWriterTests.java @@ -19,6 +19,7 @@ package io.spring.initializr.generator.buildsystem.maven; import java.io.StringWriter; import java.util.function.Consumer; +import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.Dependency.Exclusion; import io.spring.initializr.generator.buildsystem.DependencyScope; import io.spring.initializr.generator.io.IndentingWriter; @@ -261,10 +262,11 @@ class MavenBuildWriterTests { MavenBuild build = new MavenBuild(); build.setGroup("com.example.demo"); build.setArtifact("demo"); - build.dependencies().add("test", "com.example", "test", null, - DependencyScope.COMPILE, null, - new Exclusion("com.example.legacy", "legacy-one"), - new Exclusion("com.example.another", "legacy-two")); + build.dependencies().add("test", + Dependency.withCoordinates("com.example", "test") + .scope(DependencyScope.COMPILE) + .exclusions(new Exclusion("com.example.legacy", "legacy-one"), + new Exclusion("com.example.another", "legacy-two"))); generatePom(build, (pom) -> { NodeAssert dependency = pom.nodeAtPath("/project/dependencies/dependency"); assertThat(dependency).textAtPath("groupId").isEqualTo("com.example"); @@ -290,8 +292,9 @@ class MavenBuildWriterTests { MavenBuild build = new MavenBuild(); build.setGroup("com.example.demo"); build.setArtifact("demo"); - build.dependencies().add("root", "org.springframework.boot", - "spring-boot-starter", null, DependencyScope.COMPILE, "tar.gz"); + build.dependencies().add("root", Dependency + .withCoordinates("org.springframework.boot", "spring-boot-starter") + .scope(DependencyScope.COMPILE).type("tar.gz")); generatePom(build, (pom) -> { NodeAssert dependency = pom.nodeAtPath("/project/dependencies/dependency"); assertThat(dependency).textAtPath("type").isEqualTo("tar.gz"); diff --git a/initializr-metadata/src/main/java/io/spring/initializr/metadata/support/MetadataBuildItemMapper.java b/initializr-metadata/src/main/java/io/spring/initializr/metadata/support/MetadataBuildItemMapper.java index 3620981c..760f58ff 100644 --- a/initializr-metadata/src/main/java/io/spring/initializr/metadata/support/MetadataBuildItemMapper.java +++ b/initializr-metadata/src/main/java/io/spring/initializr/metadata/support/MetadataBuildItemMapper.java @@ -45,9 +45,10 @@ public final class MetadataBuildItemMapper { } VersionReference versionReference = (dependency.getVersion() != null) ? VersionReference.ofValue(dependency.getVersion()) : null; - return new io.spring.initializr.generator.buildsystem.Dependency( - dependency.getGroupId(), dependency.getArtifactId(), versionReference, - toDependencyScope(dependency.getScope()), dependency.getType()); + return io.spring.initializr.generator.buildsystem.Dependency + .withCoordinates(dependency.getGroupId(), dependency.getArtifactId()) + .version(versionReference).scope(toDependencyScope(dependency.getScope())) + .type(dependency.getType()).build(); } private static DependencyScope toDependencyScope(String scope) {