mirror of
https://gitee.com/dcren/initializr.git
synced 2025-07-16 16:50:42 +08:00
Make sure dependencies are compatible with boot version
Closes gh-825
This commit is contained in:
parent
5ea041744c
commit
fe66bbab78
@ -44,6 +44,10 @@ public class ProjectRequestToDescriptionConverter {
|
|||||||
public ProjectDescription convert(ProjectRequest request,
|
public ProjectDescription convert(ProjectRequest request,
|
||||||
InitializrMetadata metadata) {
|
InitializrMetadata metadata) {
|
||||||
validate(request, metadata);
|
validate(request, metadata);
|
||||||
|
String springBootVersion = getSpringBootVersion(request, metadata);
|
||||||
|
List<Dependency> resolvedDependencies = getResolvedDependencies(request,
|
||||||
|
springBootVersion, metadata);
|
||||||
|
validateDependencyRange(springBootVersion, resolvedDependencies);
|
||||||
ProjectDescription description = new ProjectDescription();
|
ProjectDescription description = new ProjectDescription();
|
||||||
description.setApplicationName(getApplicationName(request, metadata));
|
description.setApplicationName(getApplicationName(request, metadata));
|
||||||
description.setArtifactId(request.getArtifactId());
|
description.setArtifactId(request.getArtifactId());
|
||||||
@ -56,9 +60,8 @@ public class ProjectRequestToDescriptionConverter {
|
|||||||
description.setName(request.getName());
|
description.setName(request.getName());
|
||||||
description.setPackageName(getPackageName(request, metadata));
|
description.setPackageName(getPackageName(request, metadata));
|
||||||
description.setPackaging(Packaging.forId(request.getPackaging()));
|
description.setPackaging(Packaging.forId(request.getPackaging()));
|
||||||
String springBootVersion = getSpringBootVersion(request, metadata);
|
|
||||||
description.setPlatformVersion(Version.parse(springBootVersion));
|
description.setPlatformVersion(Version.parse(springBootVersion));
|
||||||
getResolvedDependencies(request, springBootVersion, metadata)
|
resolvedDependencies
|
||||||
.forEach((dependency) -> description.addDependency(dependency.getId(),
|
.forEach((dependency) -> description.addDependency(dependency.getId(),
|
||||||
MetadataBuildItemMapper.toDependency(dependency)));
|
MetadataBuildItemMapper.toDependency(dependency)));
|
||||||
return description;
|
return description;
|
||||||
@ -129,6 +132,17 @@ public class ProjectRequestToDescriptionConverter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void validateDependencyRange(String springBootVersion,
|
||||||
|
List<Dependency> resolvedDependencies) {
|
||||||
|
resolvedDependencies.forEach((dep) -> {
|
||||||
|
if (!dep.match(Version.parse(springBootVersion))) {
|
||||||
|
throw new InvalidProjectRequestException(
|
||||||
|
"Dependency '" + dep.getId() + "' is not compatible "
|
||||||
|
+ "with Spring Boot " + springBootVersion);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private BuildSystem getBuildSystem(ProjectRequest request,
|
private BuildSystem getBuildSystem(ProjectRequest request,
|
||||||
InitializrMetadata metadata) {
|
InitializrMetadata metadata) {
|
||||||
Type typeFromMetadata = metadata.getTypes().get(request.getType());
|
Type typeFromMetadata = metadata.getTypes().get(request.getType());
|
||||||
|
@ -22,6 +22,8 @@ import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
|
|||||||
import io.spring.initializr.generator.project.ProjectDescription;
|
import io.spring.initializr.generator.project.ProjectDescription;
|
||||||
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
|
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.generator.version.VersionRange;
|
||||||
|
import io.spring.initializr.metadata.Dependency;
|
||||||
import io.spring.initializr.metadata.InitializrMetadata;
|
import io.spring.initializr.metadata.InitializrMetadata;
|
||||||
import io.spring.initializr.metadata.Type;
|
import io.spring.initializr.metadata.Type;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
@ -102,6 +104,20 @@ public class ProjectRequestToDescriptionConverterTests {
|
|||||||
.withMessage("Unknown dependency 'invalid' check project metadata");
|
.withMessage("Unknown dependency 'invalid' check project metadata");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void convertWhenDependencyOutOfRangeShouldThrowException() {
|
||||||
|
Dependency dependency = Dependency.withId("foo");
|
||||||
|
dependency.setRange(new VersionRange(Version.parse("2.2.0.M1")));
|
||||||
|
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
|
||||||
|
.addDependencyGroup("foo", dependency).build();
|
||||||
|
ProjectRequest request = getProjectRequest();
|
||||||
|
request.setDependencies(Collections.singletonList("foo"));
|
||||||
|
assertThatExceptionOfType(InvalidProjectRequestException.class)
|
||||||
|
.isThrownBy(() -> this.converter.convert(request, metadata))
|
||||||
|
.withMessage("Dependency 'foo' is not compatible "
|
||||||
|
+ "with Spring Boot 2.1.1.RELEASE");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void convertShouldSetApplicationNameForProjectDescriptionFromRequestWhenPresent() {
|
void convertShouldSetApplicationNameForProjectDescriptionFromRequestWhenPresent() {
|
||||||
ProjectRequest request = getProjectRequest();
|
ProjectRequest request = getProjectRequest();
|
||||||
|
Loading…
Reference in New Issue
Block a user