mirror of
https://gitee.com/dcren/initializr.git
synced 2025-09-18 09:44:47 +08:00
Map project version from version capability
Closes gh-832
This commit is contained in:
@@ -92,8 +92,8 @@ public class BuildProjectGenerationConfiguration {
|
|||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public SimpleBuildCustomizer projectDescriptionBuildCustomizer(
|
public SimpleBuildCustomizer projectDescriptionBuildCustomizer(
|
||||||
ResolvedProjectDescription projectDescription, InitializrMetadata metadata) {
|
ResolvedProjectDescription projectDescription) {
|
||||||
return new SimpleBuildCustomizer(projectDescription, metadata);
|
return new SimpleBuildCustomizer(projectDescription);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
@@ -18,7 +18,6 @@ package io.spring.initializr.generator.spring.build;
|
|||||||
|
|
||||||
import io.spring.initializr.generator.buildsystem.Build;
|
import io.spring.initializr.generator.buildsystem.Build;
|
||||||
import io.spring.initializr.generator.project.ResolvedProjectDescription;
|
import io.spring.initializr.generator.project.ResolvedProjectDescription;
|
||||||
import io.spring.initializr.metadata.InitializrMetadata;
|
|
||||||
|
|
||||||
import org.springframework.core.Ordered;
|
import org.springframework.core.Ordered;
|
||||||
|
|
||||||
@@ -33,19 +32,15 @@ public class SimpleBuildCustomizer implements BuildCustomizer<Build> {
|
|||||||
|
|
||||||
private final ResolvedProjectDescription projectDescription;
|
private final ResolvedProjectDescription projectDescription;
|
||||||
|
|
||||||
private final InitializrMetadata metadata;
|
public SimpleBuildCustomizer(ResolvedProjectDescription projectDescription) {
|
||||||
|
|
||||||
public SimpleBuildCustomizer(ResolvedProjectDescription projectDescription,
|
|
||||||
InitializrMetadata metadata) {
|
|
||||||
this.projectDescription = projectDescription;
|
this.projectDescription = projectDescription;
|
||||||
this.metadata = metadata;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void customize(Build build) {
|
public void customize(Build build) {
|
||||||
build.setGroup(this.projectDescription.getGroupId());
|
build.setGroup(this.projectDescription.getGroupId());
|
||||||
build.setArtifact(this.projectDescription.getArtifactId());
|
build.setArtifact(this.projectDescription.getArtifactId());
|
||||||
build.setVersion(this.metadata.getVersion().getContent());
|
build.setVersion(this.projectDescription.getVersion());
|
||||||
this.projectDescription.getRequestedDependencies()
|
this.projectDescription.getRequestedDependencies()
|
||||||
.forEach((id, dependency) -> build.dependencies().add(id, dependency));
|
.forEach((id, dependency) -> build.dependencies().add(id, dependency));
|
||||||
}
|
}
|
||||||
|
@@ -118,6 +118,7 @@ public abstract class AbstractComplianceTests {
|
|||||||
description.setLanguage(language);
|
description.setLanguage(language);
|
||||||
description.setBuildSystem(buildSystem);
|
description.setBuildSystem(buildSystem);
|
||||||
description.setPlatformVersion(Version.parse(version));
|
description.setPlatformVersion(Version.parse(version));
|
||||||
|
description.setVersion("0.0.1-SNAPSHOT");
|
||||||
description.setName("demo");
|
description.setName("demo");
|
||||||
description.setDescription("Demo project for Spring Boot");
|
description.setDescription("Demo project for Spring Boot");
|
||||||
}
|
}
|
||||||
|
@@ -22,9 +22,7 @@ import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
|
|||||||
import io.spring.initializr.generator.language.java.JavaLanguage;
|
import io.spring.initializr.generator.language.java.JavaLanguage;
|
||||||
import io.spring.initializr.generator.project.ProjectDescription;
|
import io.spring.initializr.generator.project.ProjectDescription;
|
||||||
import io.spring.initializr.generator.project.ResolvedProjectDescription;
|
import io.spring.initializr.generator.project.ResolvedProjectDescription;
|
||||||
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
|
|
||||||
import io.spring.initializr.generator.version.Version;
|
import io.spring.initializr.generator.version.Version;
|
||||||
import io.spring.initializr.metadata.InitializrMetadata;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
@@ -39,46 +37,39 @@ class SimpleBuildCustomizerTests {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void customizeProjectCoordinates() {
|
void customizeProjectCoordinates() {
|
||||||
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
|
|
||||||
.build();
|
|
||||||
ProjectDescription description = initializeDescription();
|
ProjectDescription description = initializeDescription();
|
||||||
description.setGroupId("com.example.acme");
|
description.setGroupId("com.example.acme");
|
||||||
description.setArtifactId("my-test-project");
|
description.setArtifactId("my-test-project");
|
||||||
MavenBuild build = customizeBuild(metadata, description);
|
MavenBuild build = customizeBuild(description);
|
||||||
assertThat(build.getGroup()).isEqualTo("com.example.acme");
|
assertThat(build.getGroup()).isEqualTo("com.example.acme");
|
||||||
assertThat(build.getArtifact()).isEqualTo("my-test-project");
|
assertThat(build.getArtifact()).isEqualTo("my-test-project");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void customizeShouldSetVersionFromMetadata() {
|
void customizeVersion() {
|
||||||
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
|
ProjectDescription description = initializeDescription();
|
||||||
.build();
|
description.setVersion("1.5.6.RELEASE");
|
||||||
metadata.getVersion().setContent("1.5.6.RELEASE");
|
MavenBuild build = customizeBuild(description);
|
||||||
MavenBuild build = customizeBuild(metadata);
|
|
||||||
assertThat(build.getVersion()).isEqualTo("1.5.6.RELEASE");
|
assertThat(build.getVersion()).isEqualTo("1.5.6.RELEASE");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void customizeWithNoDependency() {
|
void customizeWithNoDependency() {
|
||||||
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
|
|
||||||
.build();
|
|
||||||
ProjectDescription description = initializeDescription();
|
ProjectDescription description = initializeDescription();
|
||||||
MavenBuild build = customizeBuild(metadata, description);
|
MavenBuild build = customizeBuild(description);
|
||||||
assertThat(build.dependencies().ids()).isEmpty();
|
assertThat(build.dependencies().ids()).isEmpty();
|
||||||
assertThat(build.dependencies().items()).isEmpty();
|
assertThat(build.dependencies().items()).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void customizeDependencies() {
|
void customizeDependencies() {
|
||||||
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
|
|
||||||
.build();
|
|
||||||
ProjectDescription description = initializeDescription();
|
ProjectDescription description = initializeDescription();
|
||||||
Dependency one = new Dependency("com.example", "one", DependencyScope.COMPILE);
|
Dependency one = new Dependency("com.example", "one", DependencyScope.COMPILE);
|
||||||
Dependency two = new Dependency("com.example.acme", "two",
|
Dependency two = new Dependency("com.example.acme", "two",
|
||||||
DependencyScope.COMPILE);
|
DependencyScope.COMPILE);
|
||||||
description.addDependency("two", two);
|
description.addDependency("two", two);
|
||||||
description.addDependency("one", one);
|
description.addDependency("one", one);
|
||||||
MavenBuild build = customizeBuild(metadata, description);
|
MavenBuild build = customizeBuild(description);
|
||||||
assertThat(build.dependencies().ids()).containsExactly("two", "one");
|
assertThat(build.dependencies().ids()).containsExactly("two", "one");
|
||||||
assertThat(build.dependencies().items()).containsExactly(two, one);
|
assertThat(build.dependencies().items()).containsExactly(two, one);
|
||||||
}
|
}
|
||||||
@@ -90,18 +81,12 @@ class SimpleBuildCustomizerTests {
|
|||||||
return description;
|
return description;
|
||||||
}
|
}
|
||||||
|
|
||||||
private MavenBuild customizeBuild(InitializrMetadata metadata) {
|
private MavenBuild customizeBuild(ProjectDescription description) {
|
||||||
ProjectDescription description = initializeDescription();
|
|
||||||
return customizeBuild(metadata, description);
|
|
||||||
}
|
|
||||||
|
|
||||||
private MavenBuild customizeBuild(InitializrMetadata metadata,
|
|
||||||
ProjectDescription description) {
|
|
||||||
MavenBuild build = new MavenBuild();
|
MavenBuild build = new MavenBuild();
|
||||||
ResolvedProjectDescription resolvedProjectDescription = new ResolvedProjectDescription(
|
ResolvedProjectDescription resolvedProjectDescription = new ResolvedProjectDescription(
|
||||||
description);
|
description);
|
||||||
SimpleBuildCustomizer customizer = new SimpleBuildCustomizer(
|
SimpleBuildCustomizer customizer = new SimpleBuildCustomizer(
|
||||||
resolvedProjectDescription, metadata);
|
resolvedProjectDescription);
|
||||||
customizer.customize(build);
|
customizer.customize(build);
|
||||||
return build;
|
return build;
|
||||||
}
|
}
|
||||||
|
@@ -47,6 +47,8 @@ public class ProjectDescription {
|
|||||||
|
|
||||||
private String artifactId;
|
private String artifactId;
|
||||||
|
|
||||||
|
private String version;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
private String description;
|
private String description;
|
||||||
@@ -121,6 +123,14 @@ public class ProjectDescription {
|
|||||||
this.artifactId = artifactId;
|
this.artifactId = artifactId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getVersion() {
|
||||||
|
return this.version;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVersion(String version) {
|
||||||
|
this.version = version;
|
||||||
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return this.name;
|
return this.name;
|
||||||
}
|
}
|
||||||
|
@@ -49,6 +49,8 @@ public final class ResolvedProjectDescription {
|
|||||||
|
|
||||||
private final String artifactId;
|
private final String artifactId;
|
||||||
|
|
||||||
|
private final String version;
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
private final String description;
|
private final String description;
|
||||||
@@ -66,6 +68,7 @@ public final class ResolvedProjectDescription {
|
|||||||
this.language = description.getLanguage();
|
this.language = description.getLanguage();
|
||||||
this.groupId = description.getGroupId();
|
this.groupId = description.getGroupId();
|
||||||
this.artifactId = description.getArtifactId();
|
this.artifactId = description.getArtifactId();
|
||||||
|
this.version = description.getVersion();
|
||||||
this.name = description.getName();
|
this.name = description.getName();
|
||||||
this.description = description.getDescription();
|
this.description = description.getDescription();
|
||||||
this.applicationName = description.getApplicationName();
|
this.applicationName = description.getApplicationName();
|
||||||
@@ -115,6 +118,10 @@ public final class ResolvedProjectDescription {
|
|||||||
return this.artifactId;
|
return this.artifactId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getVersion() {
|
||||||
|
return this.version;
|
||||||
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return this.name;
|
return this.name;
|
||||||
}
|
}
|
||||||
|
@@ -40,9 +40,9 @@ class GradleBuildWriterTests {
|
|||||||
void gradleBuildWithCoordinates() throws IOException {
|
void gradleBuildWithCoordinates() throws IOException {
|
||||||
GradleBuild build = new GradleBuild();
|
GradleBuild build = new GradleBuild();
|
||||||
build.setGroup("com.example");
|
build.setGroup("com.example");
|
||||||
build.setVersion("0.0.1-SNAPSHOT");
|
build.setVersion("1.0.1-SNAPSHOT");
|
||||||
List<String> lines = generateBuild(build);
|
List<String> lines = generateBuild(build);
|
||||||
assertThat(lines).contains("group = 'com.example'", "version = '0.0.1-SNAPSHOT'");
|
assertThat(lines).contains("group = 'com.example'", "version = '1.0.1-SNAPSHOT'");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -40,11 +40,12 @@ class MavenBuildWriterTests {
|
|||||||
MavenBuild build = new MavenBuild();
|
MavenBuild build = new MavenBuild();
|
||||||
build.setGroup("com.example.demo");
|
build.setGroup("com.example.demo");
|
||||||
build.setArtifact("demo");
|
build.setArtifact("demo");
|
||||||
|
build.setVersion("1.0.1-SNAPSHOT");
|
||||||
generatePom(build, (pom) -> {
|
generatePom(build, (pom) -> {
|
||||||
assertThat(pom).textAtPath("/project/modelVersion").isEqualTo("4.0.0");
|
assertThat(pom).textAtPath("/project/modelVersion").isEqualTo("4.0.0");
|
||||||
assertThat(pom).textAtPath("/project/groupId").isEqualTo("com.example.demo");
|
assertThat(pom).textAtPath("/project/groupId").isEqualTo("com.example.demo");
|
||||||
assertThat(pom).textAtPath("/project/artifactId").isEqualTo("demo");
|
assertThat(pom).textAtPath("/project/artifactId").isEqualTo("demo");
|
||||||
assertThat(pom).textAtPath("/project/version").isEqualTo("0.0.1-SNAPSHOT");
|
assertThat(pom).textAtPath("/project/version").isEqualTo("1.0.1-SNAPSHOT");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -102,6 +102,9 @@ public abstract class AbstractProjectGenerationTester<SELF extends AbstractProje
|
|||||||
if (projectDescription.getArtifactId() == null) {
|
if (projectDescription.getArtifactId() == null) {
|
||||||
projectDescription.setArtifactId("demo");
|
projectDescription.setArtifactId("demo");
|
||||||
}
|
}
|
||||||
|
if (projectDescription.getVersion() == null) {
|
||||||
|
projectDescription.setVersion("0.0.1-SNAPSHOT");
|
||||||
|
}
|
||||||
if (projectDescription.getApplicationName() == null) {
|
if (projectDescription.getApplicationName() == null) {
|
||||||
projectDescription.setApplicationName("DemoApplication");
|
projectDescription.setApplicationName("DemoApplication");
|
||||||
}
|
}
|
||||||
|
@@ -66,6 +66,8 @@ public class ProjectRequestToDescriptionConverter {
|
|||||||
description.setPackageName(getPackageName(request, metadata));
|
description.setPackageName(getPackageName(request, metadata));
|
||||||
description.setPackaging(Packaging.forId(request.getPackaging()));
|
description.setPackaging(Packaging.forId(request.getPackaging()));
|
||||||
description.setPlatformVersion(Version.parse(springBootVersion));
|
description.setPlatformVersion(Version.parse(springBootVersion));
|
||||||
|
description.setVersion(determineValue(request.getVersion(),
|
||||||
|
() -> metadata.getVersion().getContent()));
|
||||||
resolvedDependencies
|
resolvedDependencies
|
||||||
.forEach((dependency) -> description.addDependency(dependency.getId(),
|
.forEach((dependency) -> description.addDependency(dependency.getId(),
|
||||||
MetadataBuildItemMapper.toDependency(dependency)));
|
MetadataBuildItemMapper.toDependency(dependency)));
|
||||||
|
@@ -143,6 +143,22 @@ public class ProjectRequestToDescriptionConverterTests {
|
|||||||
assertThat(description.getArtifactId()).isEqualTo("foo");
|
assertThat(description.getArtifactId()).isEqualTo("foo");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void convertShouldSetVersionFromRequest() {
|
||||||
|
ProjectRequest request = createProjectRequest();
|
||||||
|
request.setVersion("1.0.2-SNAPSHOT");
|
||||||
|
ProjectDescription description = this.converter.convert(request, this.metadata);
|
||||||
|
assertThat(description.getVersion()).isEqualTo("1.0.2-SNAPSHOT");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void convertShouldUseDefaultFromMetadataOnEmptyVersion() {
|
||||||
|
ProjectRequest request = createProjectRequest();
|
||||||
|
request.setVersion(" ");
|
||||||
|
ProjectDescription description = this.converter.convert(request, this.metadata);
|
||||||
|
assertThat(description.getVersion()).isEqualTo("0.0.1-SNAPSHOT");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void convertShouldSetBaseDirectoryFromRequest() {
|
void convertShouldSetBaseDirectoryFromRequest() {
|
||||||
ProjectRequest request = createProjectRequest();
|
ProjectRequest request = createProjectRequest();
|
||||||
|
Reference in New Issue
Block a user