private void contribute(Map<String, Object> details, Dependency dependency) { if (!ObjectUtils.isEmpty(dependency.getMappings())) { Map<String, VersionRange> dep = new LinkedHashMap<>(); dependency.getMappings().forEach((it) -> { if (it.getRange() != null && it.getVersion() != null) { dep.put(it.getVersion(), it.getRange());
@Test void resolveVersionRequirement() { Dependency dependency = Dependency.withId("web"); dependency.getMappings().add(Dependency.Mapping .create("[1.1.0.RELEASE, 1.2.0.RELEASE)", null, null, "0.1.0.RELEASE")); dependency.resolve(); Dependency resolved = dependency.resolve(Version.parse("1.1.5.RELEASE")); assertThat(resolved.getVersionRequirement()) .isEqualTo(">=1.1.0.RELEASE and <1.2.0.RELEASE"); }
@Test void resolveMatchingWithCustomGroupId() { Dependency dependency = Dependency.withId("foo", "com.acme", "foo", "0.3.0.RELEASE"); dependency.getMappings().add(Dependency.Mapping .create("[1.1.0.RELEASE, 1.2.0.RELEASE)", null, null, "1.0.0.RELEASE")); dependency.getMappings().add(Dependency.Mapping .create("[1.2.0.RELEASE, 1.3.0.RELEASE)", null, "bar", null)); dependency.resolve(); validateResolvedDependency(dependency.resolve(Version.parse("1.1.5.RELEASE")), "foo", "com.acme", "foo", "1.0.0.RELEASE"); validateResolvedDependency(dependency.resolve(Version.parse("1.2.5.RELEASE")), "foo", "com.acme", "bar", "0.3.0.RELEASE"); }
@Test void resolveInvalidMapping() { Dependency dependency = Dependency.withId("web"); dependency.getMappings() .add(Dependency.Mapping.create("foo-bar", null, null, "0.1.0.RELEASE")); assertThatExceptionOfType(InvalidInitializrMetadataException.class) .isThrownBy(dependency::resolve).withMessageContaining("foo-bar"); }
@Test void resolveDependencies() { Dependency first = Dependency.withId("first", "org.foo", "first"); first.getMappings().add(Dependency.Mapping.create( "[1.0.0.RELEASE, 1.1.0.RELEASE)", "org.bar", "second", "0.1.0.RELEASE")); first.getMappings().add(Dependency.Mapping.create("1.1.0.RELEASE", "org.biz", "third", "0.2.0.RELEASE")); Dependency second = Dependency.withId("second", "org.foo", "second"); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("test", first, second).build(); DependencyMetadata dependencyMetadata = this.provider.get(metadata, Version.parse("1.0.5.RELEASE")); assertThat(dependencyMetadata.getDependencies()).hasSize(2); assertThat(dependencyMetadata.getDependencies().get("first").getGroupId()) .isEqualTo("org.bar"); assertThat(dependencyMetadata.getDependencies().get("first").getArtifactId()) .isEqualTo("second"); assertThat(dependencyMetadata.getDependencies().get("first").getVersion()) .isEqualTo("0.1.0.RELEASE"); DependencyMetadata anotherDependencyMetadata = this.provider.get(metadata, Version.parse("1.1.0.RELEASE")); assertThat(anotherDependencyMetadata.getDependencies()).hasSize(2); assertThat(anotherDependencyMetadata.getDependencies().get("first").getGroupId()) .isEqualTo("org.biz"); assertThat( anotherDependencyMetadata.getDependencies().get("first").getArtifactId()) .isEqualTo("third"); assertThat(anotherDependencyMetadata.getDependencies().get("first").getVersion()) .isEqualTo("0.2.0.RELEASE"); }
@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 resolveDependencyVersion() { Dependency dependency = createDependency("org.foo", "bar", "1.2.0.RELEASE"); dependency.getMappings().add(Mapping.create("[1.0.0.RELEASE, 1.1.0.RELEASE)", null, null, "0.1.0.RELEASE")); dependency.getMappings() .add(Mapping.create("1.1.0.RELEASE", null, null, "0.2.0.RELEASE")); this.metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("code", dependency).build(); ProjectRequest request = initProjectRequest(); request.setBootVersion("1.0.5.RELEASE"); request.getStyle().add("org.foo:bar"); request.resolve(this.metadata); assertDependency(request.getResolvedDependencies().get(0), "org.foo", "bar", "0.1.0.RELEASE"); ProjectRequest anotherRequest = new ProjectRequest(); anotherRequest.setBootVersion("1.1.0.RELEASE"); anotherRequest.getStyle().add("org.foo:bar"); anotherRequest.resolve(this.metadata); assertDependency(anotherRequest.getResolvedDependencies().get(0), "org.foo", "bar", "0.2.0.RELEASE"); }
@Test void versionRangeWithPostProcessor() { Dependency foo = Dependency.withId("foo", "org.acme", "foo"); foo.getMappings().add(Dependency.Mapping.create("[2.2.0.RELEASE,2.3.0.M1)", null, null, "1.0.0")); foo.getMappings().add(Dependency.Mapping.create("2.3.0.M1", null, null, "1.2.0")); InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults() .addDependencyGroup("foo", foo).build(); applyMetadata(metadata); // First without processor, get the correct version ProjectRequest request = createProjectRequest("foo"); request.setBootVersion("2.2.5.RELEASE"); generateMavenPom(request) .hasDependency(Dependency.withId("foo", "org.acme", "foo", "1.0.0")); // First after processor that flips Spring Boot version this.projectGenerator.setRequestResolver(new ProjectRequestResolver( Collections.singletonList(new ProjectRequestPostProcessor() { @Override public void postProcessBeforeResolution(ProjectRequest r, InitializrMetadata m) { r.setBootVersion("2.3.0.M2"); } }))); generateMavenPom(request) .hasDependency(Dependency.withId("foo", "org.acme", "foo", "1.2.0")); }
.add(Mapping.create("1.3.x.BUILD-SNAPSHOT", "1.1.0-BUILD-SNAPSHOT")); Dependency dependency = Dependency.withId("bar"); dependency.getMappings().add(Dependency.Mapping .create("[1.3.0.RELEASE, 1.3.x.RELEASE]", null, null, "0.1.0.RELEASE")); dependency.getMappings().add(Dependency.Mapping.create("1.3.x.BUILD-SNAPSHOT", null, null, "0.2.0.RELEASE"));
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")); dependency.getMappings().add(Dependency.Mapping.create( "[1.1.x.BUILD-SNAPSHOT, 1.2.0.RELEASE)", null, null, "0.2.0.RELEASE")); dependency.resolve();
private void contribute(Map<String, Object> details, Dependency d) { if (!ObjectUtils.isEmpty(d.getMappings())) { Map<String, VersionRange> dep = new LinkedHashMap<>(); d.getMappings().forEach((it) -> { if (it.getRange() != null && it.getVersion() != null) { dep.put(it.getVersion(), it.getRange());