mirror of
https://gitee.com/dcren/initializr.git
synced 2025-09-18 09:44:47 +08:00
Use build tag to infer the build system
Stop using the type's prefix to infer the build system to use as the build tag in the metadata is supposed to provide that information. See gh-817
This commit is contained in:
@@ -20,8 +20,6 @@ import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.BuildSystem;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
|
||||
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem;
|
||||
import io.spring.initializr.generator.language.Language;
|
||||
import io.spring.initializr.generator.packaging.Packaging;
|
||||
import io.spring.initializr.generator.project.ProjectDescription;
|
||||
@@ -50,7 +48,7 @@ public class ProjectRequestToDescriptionConverter {
|
||||
description.setApplicationName(getApplicationName(request, metadata));
|
||||
description.setArtifactId(request.getArtifactId());
|
||||
description.setBaseDirectory(request.getBaseDir());
|
||||
description.setBuildSystem(getBuildSystem(request));
|
||||
description.setBuildSystem(getBuildSystem(request, metadata));
|
||||
description.setDescription(request.getDescription());
|
||||
description.setGroupId(request.getGroupId());
|
||||
description.setLanguage(
|
||||
@@ -89,6 +87,10 @@ public class ProjectRequestToDescriptionConverter {
|
||||
throw new InvalidProjectRequestException(
|
||||
"Unknown type '" + type + "' check project metadata");
|
||||
}
|
||||
if (!typeFromMetadata.getTags().containsKey("build")) {
|
||||
throw new InvalidProjectRequestException("Invalid type '" + type
|
||||
+ "' (missing build tag) check project metadata");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,9 +129,10 @@ public class ProjectRequestToDescriptionConverter {
|
||||
});
|
||||
}
|
||||
|
||||
private BuildSystem getBuildSystem(ProjectRequest request) {
|
||||
return (request.getType().startsWith("gradle")) ? new GradleBuildSystem()
|
||||
: new MavenBuildSystem();
|
||||
private BuildSystem getBuildSystem(ProjectRequest request,
|
||||
InitializrMetadata metadata) {
|
||||
Type typeFromMetadata = metadata.getTypes().get(request.getType());
|
||||
return BuildSystem.forId(typeFromMetadata.getTags().get("build"));
|
||||
}
|
||||
|
||||
private String getPackageName(ProjectRequest request, InitializrMetadata metadata) {
|
||||
|
@@ -18,10 +18,12 @@ package io.spring.initializr.web.project;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
|
||||
import io.spring.initializr.generator.project.ProjectDescription;
|
||||
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
import io.spring.initializr.metadata.InitializrMetadata;
|
||||
import io.spring.initializr.metadata.Type;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -31,6 +33,7 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
* Tests for {@link ProjectRequestToDescriptionConverter}.
|
||||
*
|
||||
* @author Madhura Bhave
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class ProjectRequestToDescriptionConverterTests {
|
||||
|
||||
@@ -48,6 +51,20 @@ public class ProjectRequestToDescriptionConverterTests {
|
||||
.withMessage("Unknown type 'foo-build' check project metadata");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertWhenTypeDoesNotDefineBuildTagShouldThrowException() {
|
||||
Type type = new Type();
|
||||
type.setId("example-project");
|
||||
InitializrMetadata testMetadata = InitializrMetadataTestBuilder.withDefaults()
|
||||
.addType(type).build();
|
||||
ProjectRequest request = getProjectRequest();
|
||||
request.setType("example-project");
|
||||
assertThatExceptionOfType(InvalidProjectRequestException.class)
|
||||
.isThrownBy(() -> this.converter.convert(request, testMetadata))
|
||||
.withMessage(
|
||||
"Invalid type 'example-project' (missing build tag) check project metadata");
|
||||
}
|
||||
|
||||
@Test
|
||||
void convertWhenSpringBootVersionInvalidShouldThrowException() {
|
||||
ProjectRequest request = getProjectRequest();
|
||||
@@ -119,11 +136,16 @@ public class ProjectRequestToDescriptionConverterTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
void convertShouldSetBuildSystemFromRequestType() {
|
||||
void convertShouldSetBuildSystemFromRequestTypeAndBuildTag() {
|
||||
Type type = new Type();
|
||||
type.setId("example-type");
|
||||
type.getTags().put("build", "gradle");
|
||||
InitializrMetadata testMetadata = InitializrMetadataTestBuilder.withDefaults()
|
||||
.addType(type).build();
|
||||
ProjectRequest request = getProjectRequest();
|
||||
request.setType("gradle-build");
|
||||
ProjectDescription description = this.converter.convert(request, this.metadata);
|
||||
assertThat(description.getBuildSystem().id()).isEqualTo("gradle");
|
||||
request.setType("example-type");
|
||||
ProjectDescription description = this.converter.convert(request, testMetadata);
|
||||
assertThat(description.getBuildSystem()).isInstanceOf(GradleBuildSystem.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user