mirror of
https://gitee.com/dcren/initializr.git
synced 2025-04-05 17:38:06 +08:00
MetadataBuildItemResolver should use platform version
Closes gh-872
This commit is contained in:
parent
9050056f24
commit
568ef5ed32
@ -26,6 +26,7 @@ import io.spring.initializr.generator.io.SimpleIndentStrategy;
|
||||
import io.spring.initializr.generator.language.Language;
|
||||
import io.spring.initializr.generator.project.ProjectDescription;
|
||||
import io.spring.initializr.generator.project.ProjectGenerationContext;
|
||||
import io.spring.initializr.generator.project.ResolvedProjectDescription;
|
||||
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
|
||||
import io.spring.initializr.generator.spring.test.ProjectAssert;
|
||||
import io.spring.initializr.generator.test.project.ProjectGeneratorTester;
|
||||
@ -107,8 +108,9 @@ public abstract class AbstractComplianceTests {
|
||||
private void setupProjectGenerationContext(InitializrMetadata metadata,
|
||||
ProjectGenerationContext context) {
|
||||
context.registerBean(InitializrMetadata.class, () -> metadata);
|
||||
context.registerBean(BuildItemResolver.class,
|
||||
() -> new MetadataBuildItemResolver(metadata));
|
||||
context.registerBean(BuildItemResolver.class, () -> new MetadataBuildItemResolver(
|
||||
metadata,
|
||||
context.getBean(ResolvedProjectDescription.class).getPlatformVersion()));
|
||||
context.registerBean(IndentingWriterFactory.class,
|
||||
() -> IndentingWriterFactory.create(new SimpleIndentStrategy("\t")));
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ import io.spring.initializr.generator.buildsystem.Build;
|
||||
import io.spring.initializr.generator.buildsystem.DependencyScope;
|
||||
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
|
||||
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
import io.spring.initializr.metadata.Dependency;
|
||||
import io.spring.initializr.metadata.InitializrMetadata;
|
||||
import io.spring.initializr.metadata.MetadataElement;
|
||||
@ -79,7 +80,8 @@ class BuildMetadataResolverTests {
|
||||
}
|
||||
|
||||
private Build createBuild(InitializrMetadata metadata) {
|
||||
return new MavenBuild(new MetadataBuildItemResolver(metadata));
|
||||
return new MavenBuild(
|
||||
new MetadataBuildItemResolver(metadata, Version.parse("2.0.0.RELEASE")));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ package io.spring.initializr.generator.spring.build;
|
||||
import io.spring.initializr.generator.buildsystem.Build;
|
||||
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
|
||||
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
import io.spring.initializr.metadata.Dependency;
|
||||
import io.spring.initializr.metadata.InitializrMetadata;
|
||||
import io.spring.initializr.metadata.support.MetadataBuildItemResolver;
|
||||
@ -70,7 +71,8 @@ class DefaultStarterBuildCustomizerTests {
|
||||
}
|
||||
|
||||
private Build createBuild(InitializrMetadata metadata) {
|
||||
return new MavenBuild(new MetadataBuildItemResolver(metadata));
|
||||
return new MavenBuild(
|
||||
new MetadataBuildItemResolver(metadata, Version.parse("2.0.0.RELEASE")));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -73,7 +73,8 @@ class DependencyManagementBuildCustomizerTests {
|
||||
}
|
||||
|
||||
private MavenBuild createBuild(InitializrMetadata metadata) {
|
||||
return new MavenBuild(new MetadataBuildItemResolver(metadata));
|
||||
return new MavenBuild(
|
||||
new MetadataBuildItemResolver(metadata, Version.parse("2.0.0.RELEASE")));
|
||||
}
|
||||
|
||||
private void customizeBuild(Build build, InitializrMetadata metadata) {
|
||||
|
@ -21,6 +21,7 @@ import java.util.Collections;
|
||||
import io.spring.initializr.generator.buildsystem.Build;
|
||||
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
|
||||
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
import io.spring.initializr.metadata.Dependency;
|
||||
import io.spring.initializr.metadata.InitializrMetadata;
|
||||
import io.spring.initializr.metadata.support.MetadataBuildItemResolver;
|
||||
@ -68,14 +69,15 @@ class WarPackagingWebStarterBuildCustomizerTests {
|
||||
dependency.setFacets(Collections.singletonList("web"));
|
||||
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
|
||||
.addDependencyGroup("test", dependency).build();
|
||||
Build build = new MavenBuild(new MetadataBuildItemResolver(metadata));
|
||||
Build build = createBuild(metadata);
|
||||
build.dependencies().add("test");
|
||||
new WarPackagingWebStarterBuildCustomizer(metadata).customize(build);
|
||||
assertThat(build.dependencies().ids()).containsOnly("test", "tomcat");
|
||||
}
|
||||
|
||||
private Build createBuild(InitializrMetadata metadata) {
|
||||
return new MavenBuild(new MetadataBuildItemResolver(metadata));
|
||||
return new MavenBuild(
|
||||
new MetadataBuildItemResolver(metadata, Version.parse("2.0.0.RELEASE")));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ import java.util.Collections;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
|
||||
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
import io.spring.initializr.metadata.Dependency;
|
||||
import io.spring.initializr.metadata.InitializrMetadata;
|
||||
import io.spring.initializr.metadata.support.MetadataBuildItemResolver;
|
||||
@ -60,7 +61,8 @@ class KotlinJpaGradleBuildCustomizerTests {
|
||||
SimpleKotlinProjectSettings settings = new SimpleKotlinProjectSettings("1.2.70");
|
||||
KotlinJpaGradleBuildCustomizer customizer = new KotlinJpaGradleBuildCustomizer(
|
||||
metadata, settings);
|
||||
GradleBuild build = new GradleBuild(new MetadataBuildItemResolver(metadata));
|
||||
GradleBuild build = new GradleBuild(
|
||||
new MetadataBuildItemResolver(metadata, Version.parse("2.0.0.RELEASE")));
|
||||
build.dependencies().add("foo");
|
||||
customizer.customize(build);
|
||||
return build;
|
||||
|
@ -21,6 +21,7 @@ import java.util.Collections;
|
||||
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
|
||||
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin;
|
||||
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
import io.spring.initializr.metadata.Dependency;
|
||||
import io.spring.initializr.metadata.InitializrMetadata;
|
||||
import io.spring.initializr.metadata.support.MetadataBuildItemResolver;
|
||||
@ -68,7 +69,8 @@ class KotlinJpaMavenBuildCustomizerTests {
|
||||
.addDependencyGroup("test", dependency).build();
|
||||
KotlinJpaMavenBuildCustomizer customizer = new KotlinJpaMavenBuildCustomizer(
|
||||
metadata);
|
||||
MavenBuild build = new MavenBuild(new MetadataBuildItemResolver(metadata));
|
||||
MavenBuild build = new MavenBuild(
|
||||
new MetadataBuildItemResolver(metadata, Version.parse("2.0.0.RELEASE")));
|
||||
build.dependencies().add("foo");
|
||||
customizer.customize(build);
|
||||
return build;
|
||||
|
@ -23,6 +23,7 @@ import java.util.Collections;
|
||||
import io.spring.initializr.generator.buildsystem.Build;
|
||||
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
|
||||
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
import io.spring.initializr.metadata.Dependency;
|
||||
import io.spring.initializr.metadata.InitializrMetadata;
|
||||
import io.spring.initializr.metadata.support.MetadataBuildItemResolver;
|
||||
@ -80,7 +81,8 @@ class WebFoldersContributorTests {
|
||||
}
|
||||
|
||||
private Build createBuild(InitializrMetadata metadata) {
|
||||
return new MavenBuild(new MetadataBuildItemResolver(metadata));
|
||||
return new MavenBuild(
|
||||
new MetadataBuildItemResolver(metadata, Version.parse("2.0.0.RELEASE")));
|
||||
}
|
||||
|
||||
private Path contribute(Build build, InitializrMetadata metadata) throws IOException {
|
||||
|
@ -43,9 +43,10 @@ public final class MetadataBuildItemMapper {
|
||||
if (dependency == null) {
|
||||
return null;
|
||||
}
|
||||
VersionReference versionReference = (dependency.getVersion() != null)
|
||||
? VersionReference.ofValue(dependency.getVersion()) : null;
|
||||
return new io.spring.initializr.generator.buildsystem.Dependency(
|
||||
dependency.getGroupId(), dependency.getArtifactId(),
|
||||
VersionReference.ofValue(dependency.getVersion()),
|
||||
dependency.getGroupId(), dependency.getArtifactId(), versionReference,
|
||||
toDependencyScope(dependency.getScope()), dependency.getType());
|
||||
}
|
||||
|
||||
|
@ -20,11 +20,12 @@ import io.spring.initializr.generator.buildsystem.BillOfMaterials;
|
||||
import io.spring.initializr.generator.buildsystem.BuildItemResolver;
|
||||
import io.spring.initializr.generator.buildsystem.Dependency;
|
||||
import io.spring.initializr.generator.buildsystem.MavenRepository;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
import io.spring.initializr.metadata.InitializrMetadata;
|
||||
|
||||
/**
|
||||
* A {@link BuildItemResolver} that uses the {@link InitializrMetadata} to resolve build
|
||||
* items.
|
||||
* items against a given platform {@link Version}.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
@ -32,20 +33,39 @@ public final class MetadataBuildItemResolver implements BuildItemResolver {
|
||||
|
||||
private final InitializrMetadata metadata;
|
||||
|
||||
public MetadataBuildItemResolver(InitializrMetadata metadata) {
|
||||
private final Version platformVersion;
|
||||
|
||||
/**
|
||||
* Creates an instance for the specified {@link InitializrMetadata} and {@link Version
|
||||
* platform version}.
|
||||
* @param metadata the metadata to use
|
||||
* @param platformVersion the platform version to consider
|
||||
*/
|
||||
public MetadataBuildItemResolver(InitializrMetadata metadata,
|
||||
Version platformVersion) {
|
||||
this.metadata = metadata;
|
||||
this.platformVersion = platformVersion;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dependency resolveDependency(String id) {
|
||||
return MetadataBuildItemMapper
|
||||
.toDependency(this.metadata.getDependencies().get(id));
|
||||
io.spring.initializr.metadata.Dependency dependency = this.metadata
|
||||
.getDependencies().get(id);
|
||||
if (dependency != null) {
|
||||
return MetadataBuildItemMapper
|
||||
.toDependency(dependency.resolve(this.platformVersion));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BillOfMaterials resolveBom(String id) {
|
||||
return MetadataBuildItemMapper
|
||||
.toBom(this.metadata.getConfiguration().getEnv().getBoms().get(id));
|
||||
io.spring.initializr.metadata.BillOfMaterials bom = this.metadata
|
||||
.getConfiguration().getEnv().getBoms().get(id);
|
||||
if (bom != null) {
|
||||
return MetadataBuildItemMapper.toBom(bom.resolve(this.platformVersion));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -21,8 +21,10 @@ import java.net.URL;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.DependencyScope;
|
||||
import io.spring.initializr.generator.buildsystem.MavenRepository;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
import io.spring.initializr.metadata.BillOfMaterials;
|
||||
import io.spring.initializr.metadata.Dependency;
|
||||
import io.spring.initializr.metadata.Dependency.Mapping;
|
||||
import io.spring.initializr.metadata.DependencyGroup;
|
||||
import io.spring.initializr.metadata.InitializrMetadata;
|
||||
import io.spring.initializr.metadata.Repository;
|
||||
@ -37,6 +39,8 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
*/
|
||||
class MetadataBuildItemResolverTests {
|
||||
|
||||
private static final Version VERSION_2_0_0 = Version.parse("2.0.0.RELEASE");
|
||||
|
||||
@Test
|
||||
void resoleDependencyWithMatchingEntry() {
|
||||
InitializrMetadata metadata = new InitializrMetadata();
|
||||
@ -45,7 +49,8 @@ class MetadataBuildItemResolverTests {
|
||||
Dependency.withId("test-dep", "com.example", "test", "1.0.0", "runtime"));
|
||||
metadata.getDependencies().getContent().add(group);
|
||||
metadata.validate();
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata);
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata,
|
||||
VERSION_2_0_0);
|
||||
io.spring.initializr.generator.buildsystem.Dependency dependency = resolver
|
||||
.resolveDependency("test-dep");
|
||||
assertThat(dependency.getGroupId()).isEqualTo("com.example");
|
||||
@ -54,6 +59,28 @@ class MetadataBuildItemResolverTests {
|
||||
assertThat(dependency.getScope()).isEqualTo(DependencyScope.RUNTIME);
|
||||
}
|
||||
|
||||
@Test
|
||||
void resoleDependencyWithMatchingEntryAndVersionRange() {
|
||||
InitializrMetadata metadata = new InitializrMetadata();
|
||||
DependencyGroup group = DependencyGroup.create("test");
|
||||
Dependency dependency = Dependency.withId("test-dep", "com.example", "test");
|
||||
dependency.getMappings().add(Mapping.create("[1.0.0.RELEASE, 2.0.0.RELEASE)",
|
||||
null, null, "1.0.0.RELEASE"));
|
||||
dependency.getMappings().add(Mapping.create("2.0.0.RELEASE",
|
||||
"com.example.override", "test-override", null));
|
||||
group.getContent().add(dependency);
|
||||
metadata.getDependencies().getContent().add(group);
|
||||
metadata.validate();
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata,
|
||||
VERSION_2_0_0);
|
||||
io.spring.initializr.generator.buildsystem.Dependency resolveDependency = resolver
|
||||
.resolveDependency("test-dep");
|
||||
assertThat(resolveDependency.getGroupId()).isEqualTo("com.example.override");
|
||||
assertThat(resolveDependency.getArtifactId()).isEqualTo("test-override");
|
||||
assertThat(resolveDependency.getVersion()).isNull();
|
||||
assertThat(resolveDependency.getScope()).isEqualTo(DependencyScope.COMPILE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void resoleDependencyWithNotMatchingEntry() {
|
||||
InitializrMetadata metadata = new InitializrMetadata();
|
||||
@ -62,7 +89,8 @@ class MetadataBuildItemResolverTests {
|
||||
Dependency.withId("test-dep", "com.example", "test", "1.0.0", "runtime"));
|
||||
metadata.getDependencies().getContent().add(group);
|
||||
metadata.validate();
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata);
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata,
|
||||
VERSION_2_0_0);
|
||||
assertThat(resolver.resolveDependency("does-not-exist")).isNull();
|
||||
}
|
||||
|
||||
@ -72,7 +100,8 @@ class MetadataBuildItemResolverTests {
|
||||
BillOfMaterials bom = BillOfMaterials.create("com.example", "bom", "2.0.0");
|
||||
metadata.getConfiguration().getEnv().getBoms().put("test-bom", bom);
|
||||
metadata.validate();
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata);
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata,
|
||||
VERSION_2_0_0);
|
||||
io.spring.initializr.generator.buildsystem.BillOfMaterials resolvedBom = resolver
|
||||
.resolveBom("test-bom");
|
||||
assertThat(resolvedBom.getGroupId()).isEqualTo("com.example");
|
||||
@ -80,13 +109,34 @@ class MetadataBuildItemResolverTests {
|
||||
assertThat(resolvedBom.getVersion()).hasToString("2.0.0");
|
||||
}
|
||||
|
||||
@Test
|
||||
void resoleBomWithMatchingEntryAndVersionRange() throws MalformedURLException {
|
||||
InitializrMetadata metadata = new InitializrMetadata();
|
||||
BillOfMaterials bom = BillOfMaterials.create("com.example", "bom", "0.0.1");
|
||||
bom.getMappings().add(BillOfMaterials.Mapping
|
||||
.create("[1.0.0.RELEASE, 2.0.0.RELEASE)", "1.0.0"));
|
||||
bom.getMappings().add(BillOfMaterials.Mapping.create("2.0.0.RELEASE", "1.1.0"));
|
||||
metadata.getConfiguration().getEnv().getBoms().put("test-bom", bom);
|
||||
metadata.getConfiguration().getEnv().getRepositories().put("test-repo",
|
||||
new Repository("test", new URL("https://example.com/repo"), false));
|
||||
metadata.validate();
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata,
|
||||
VERSION_2_0_0);
|
||||
io.spring.initializr.generator.buildsystem.BillOfMaterials resolvedBom = resolver
|
||||
.resolveBom("test-bom");
|
||||
assertThat(resolvedBom.getGroupId()).isEqualTo("com.example");
|
||||
assertThat(resolvedBom.getArtifactId()).isEqualTo("bom");
|
||||
assertThat(resolvedBom.getVersion()).hasToString("1.1.0");
|
||||
}
|
||||
|
||||
@Test
|
||||
void resoleBomWithNotMatchingEntry() {
|
||||
InitializrMetadata metadata = new InitializrMetadata();
|
||||
BillOfMaterials bom = BillOfMaterials.create("com.example", "bom", "2.0.0");
|
||||
metadata.getConfiguration().getEnv().getBoms().put("test-bom", bom);
|
||||
metadata.validate();
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata);
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata,
|
||||
VERSION_2_0_0);
|
||||
assertThat(resolver.resolveBom("does-not-exost")).isNull();
|
||||
}
|
||||
|
||||
@ -96,7 +146,8 @@ class MetadataBuildItemResolverTests {
|
||||
metadata.getConfiguration().getEnv().getRepositories().put("test-repo",
|
||||
new Repository("test", new URL("https://example.com/repo"), false));
|
||||
metadata.validate();
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata);
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata,
|
||||
VERSION_2_0_0);
|
||||
MavenRepository repository = resolver.resolveRepository("test-repo");
|
||||
assertThat(repository.getId()).isEqualTo("test-repo");
|
||||
assertThat(repository.getName()).isEqualTo("test");
|
||||
@ -110,7 +161,8 @@ class MetadataBuildItemResolverTests {
|
||||
metadata.getConfiguration().getEnv().getRepositories().put("test-repo",
|
||||
new Repository("test", new URL("https://example.com/repo"), false));
|
||||
metadata.validate();
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata);
|
||||
MetadataBuildItemResolver resolver = new MetadataBuildItemResolver(metadata,
|
||||
VERSION_2_0_0);
|
||||
assertThat(resolver.resolveRepository("does-not-exist")).isNull();
|
||||
}
|
||||
|
||||
|
@ -194,8 +194,9 @@ public class ProjectGenerationInvoker {
|
||||
AnnotationConfigApplicationContext context, InitializrMetadata metadata) {
|
||||
context.setParent(this.parentApplicationContext);
|
||||
context.registerBean(InitializrMetadata.class, () -> metadata);
|
||||
context.registerBean(BuildItemResolver.class,
|
||||
() -> new MetadataBuildItemResolver(metadata));
|
||||
context.registerBean(BuildItemResolver.class, () -> new MetadataBuildItemResolver(
|
||||
metadata,
|
||||
context.getBean(ResolvedProjectDescription.class).getPlatformVersion()));
|
||||
}
|
||||
|
||||
private void publishProjectGeneratedEvent(ProjectRequest request,
|
||||
|
Loading…
Reference in New Issue
Block a user