mirror of
https://gitee.com/dcren/initializr.git
synced 2025-07-15 23:13:30 +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,
|
||||
InitializrMetadata metadata) {
|
||||
validate(request, metadata);
|
||||
String springBootVersion = getSpringBootVersion(request, metadata);
|
||||
List<Dependency> resolvedDependencies = getResolvedDependencies(request,
|
||||
springBootVersion, metadata);
|
||||
validateDependencyRange(springBootVersion, resolvedDependencies);
|
||||
ProjectDescription description = new ProjectDescription();
|
||||
description.setApplicationName(getApplicationName(request, metadata));
|
||||
description.setArtifactId(request.getArtifactId());
|
||||
@ -56,9 +60,8 @@ public class ProjectRequestToDescriptionConverter {
|
||||
description.setName(request.getName());
|
||||
description.setPackageName(getPackageName(request, metadata));
|
||||
description.setPackaging(Packaging.forId(request.getPackaging()));
|
||||
String springBootVersion = getSpringBootVersion(request, metadata);
|
||||
description.setPlatformVersion(Version.parse(springBootVersion));
|
||||
getResolvedDependencies(request, springBootVersion, metadata)
|
||||
resolvedDependencies
|
||||
.forEach((dependency) -> description.addDependency(dependency.getId(),
|
||||
MetadataBuildItemMapper.toDependency(dependency)));
|
||||
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,
|
||||
InitializrMetadata metadata) {
|
||||
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.spring.test.InitializrMetadataTestBuilder;
|
||||
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.Type;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -102,6 +104,20 @@ public class ProjectRequestToDescriptionConverterTests {
|
||||
.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
|
||||
void convertShouldSetApplicationNameForProjectDescriptionFromRequestWhenPresent() {
|
||||
ProjectRequest request = getProjectRequest();
|
||||
|
Loading…
Reference in New Issue
Block a user