private static void validateResolvedWebDependency(Dependency dependency, String expectedGroupId, String expectedArtifactId, String expectedVersion) { validateResolvedDependency(dependency, "web", expectedGroupId, expectedArtifactId, expectedVersion); assertThat(dependency.getKeywords()).hasSize(2); assertThat(dependency.getAliases()).hasSize(1); assertThat(dependency.getFacets()).hasSize(1); }
@BeforeEach public void setup(@TempDirectory.TempDir Path folder) { Dependency web = Dependency.withId("web"); web.getFacets().add("web"); InitializrMetadata metadata = initializeTestMetadataBuilder() .addDependencyGroup("web", web).addDependencyGroup("test", "security", "data-jpa", "aop", "batch", "integration") .build(); applyMetadata(metadata); this.projectGenerator.setEventPublisher(this.eventPublisher); this.projectGenerator .setRequestResolver(new ProjectRequestResolver(new ArrayList<>())); this.projectGenerator.setTmpdir(folder.toString()); }
@Test void resolveMatchingVersionMapping() { Dependency dependency = Dependency.withId("web", null, null, "0.3.0.RELEASE"); dependency.setDescription("A web dependency"); dependency.getKeywords().addAll(Arrays.asList("foo", "bar")); dependency.getAliases().add("the-web"); dependency.getFacets().add("web"); dependency.getMappings().add(Dependency.Mapping .create("[1.1.0.RELEASE, 1.2.0.RELEASE)", null, null, "0.1.0.RELEASE")); dependency.getMappings().add(Dependency.Mapping .create("[1.2.0.RELEASE, 1.3.0.RELEASE)", null, null, "0.2.0.RELEASE")); dependency.resolve(); validateResolvedWebDependency(dependency.resolve(Version.parse("1.1.5.RELEASE")), "org.springframework.boot", "spring-boot-starter-web", "0.1.0.RELEASE"); validateResolvedWebDependency(dependency.resolve(Version.parse("1.2.0.RELEASE")), "org.springframework.boot", "spring-boot-starter-web", "0.2.0.RELEASE"); validateResolvedWebDependency(dependency.resolve(Version.parse("2.1.3.M1")), "org.springframework.boot", "spring-boot-starter-web", "0.3.0.RELEASE"); // default }
@Test void resolveMatchArtifactMapping() { Dependency dependency = Dependency.withId("web", null, null, "0.3.0.RELEASE"); dependency.setDescription("A web dependency"); dependency.getKeywords().addAll(Arrays.asList("foo", "bar")); dependency.getAliases().add("the-web"); dependency.getFacets().add("web"); dependency.getMappings().add(Dependency.Mapping .create("[1.1.0.RELEASE, 1.2.0.RELEASE)", "org.spring.boot", null, null)); dependency.getMappings().add(Dependency.Mapping .create("[1.2.0.RELEASE, 1.3.0.RELEASE)", null, "starter-web", null)); dependency.resolve(); validateResolvedWebDependency(dependency.resolve(Version.parse("1.1.5.RELEASE")), "org.spring.boot", "spring-boot-starter-web", "0.3.0.RELEASE"); validateResolvedWebDependency(dependency.resolve(Version.parse("1.2.0.RELEASE")), "org.springframework.boot", "starter-web", "0.3.0.RELEASE"); validateResolvedWebDependency(dependency.resolve(Version.parse("2.1.3.M1")), "org.springframework.boot", "spring-boot-starter-web", "0.3.0.RELEASE"); // default }
@Test void mavenPomWithWebFacet() { Dependency dependency = Dependency.withId("thymeleaf", "org.foo", "thymeleaf"); dependency.getFacets().add("web"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("core", "web", "security", "data-jpa") .addDependencyGroup("test", dependency).build(); applyMetadata(metadata); ProjectRequest request = createProjectRequest("thymeleaf"); generateMavenPom(request).hasDependency("org.foo", "thymeleaf") .hasDependenciesCount(2); }
}).collect(Collectors.toList()); this.resolvedDependencies.forEach((it) -> { it.getFacets().forEach((facet) -> { if (!this.facets.contains(facet)) { this.facets.add(facet);
dependency.getKeywords().addAll(Arrays.asList("foo", "bar")); dependency.getAliases().add("the-web"); dependency.getFacets().add("web"); dependency.getMappings().add(Dependency.Mapping .create("[1.1.0.RELEASE, 1.1.x.RELEASE]", null, null, "0.1.0.RELEASE"));
@Test void mavenWarWithWebFacet() { Dependency dependency = Dependency.withId("thymeleaf", "org.foo", "thymeleaf"); dependency.getFacets().add("web"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("core", "web", "security", "data-jpa") .addDependencyGroup("test", dependency).build(); applyMetadata(metadata); ProjectRequest request = createProjectRequest("thymeleaf"); request.setPackaging("war"); generateProject(request).isJavaWarProject().isMavenProject().pomAssert() .hasSpringBootStarterTomcat() // This is tagged as web facet so it brings the web one .hasDependency("org.foo", "thymeleaf").hasSpringBootStarterTest() .hasDependenciesCount(3); }
@Test void gradleWarWithWebFacet() { Dependency dependency = Dependency.withId("thymeleaf", "org.foo", "thymeleaf"); dependency.getFacets().add("web"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("core", "web", "security", "data-jpa") .addDependencyGroup("test", dependency).build(); applyMetadata(metadata); ProjectRequest request = createProjectRequest("thymeleaf"); request.setPackaging("war"); request.setType("gradle-project"); generateProject(request).isJavaWarProject().isGradleProject().gradleBuildAssert() // This is tagged as web facet so it brings the web one .contains("apply plugin: 'war'") .contains("implementation 'org.foo:thymeleaf'") .doesNotContain( "implementation 'org.springframework.boot:spring-boot-starter-web'") .contains( "testImplementation 'org.springframework.boot:spring-boot-starter-test'") .doesNotContain("configurations {") // no need to declare providedRuntime .contains("providedRuntime").contains( "providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'"); }