Polish custom maven parent pom support

This commit is contained in:
Stephane Nicoll
2016-07-12 16:03:30 +02:00
parent 9a9d114aa0
commit c3dfbc828e
3 changed files with 37 additions and 11 deletions

View File

@@ -116,8 +116,7 @@ class ProjectGenerator {
def dir = initializerProjectDir(rootDir, request) def dir = initializerProjectDir(rootDir, request)
boolean gradleBuild = 'gradle'.equals(request.build) if (isGradleBuild(request)) {
if (gradleBuild) {
def gradle = new String(doGenerateGradleBuild(model)) def gradle = new String(doGenerateGradleBuild(model))
new File(dir, 'build.gradle').write(gradle) new File(dir, 'build.gradle').write(gradle)
writeGradleWrapper(dir) writeGradleWrapper(dir)
@@ -201,10 +200,6 @@ class ProjectGenerator {
Assert.notNull request.bootVersion, 'boot version must not be null' Assert.notNull request.bootVersion, 'boot version must not be null'
def model = [:] def model = [:]
def metadata = metadataProvider.get() def metadata = metadataProvider.get()
ParentPom parentPom = metadata.configuration.env.maven.resolveParentPom(request.bootVersion)
if (parentPom.includeSpringBootBom && !request.boms['spring-boot']) {
request.boms['spring-boot'] = metadata.createSpringBootBom('${spring-boot.version}')
}
request.resolve(metadata) request.resolve(metadata)
@@ -215,10 +210,17 @@ class ProjectGenerator {
request.properties.each { model[it.key] = it.value } request.properties.each { model[it.key] = it.value }
model['mavenParentGroupId'] = parentPom.groupId if (isMavenBuild(request)) {
model['mavenParentArtifactId'] = parentPom.artifactId ParentPom parentPom = metadata.configuration.env.maven.resolveParentPom(request.bootVersion)
model['mavenParentVersion'] = parentPom.version if (parentPom.includeSpringBootBom && !request.boms['spring-boot']) {
model['includeSpringBootBom'] = parentPom.includeSpringBootBom request.boms['spring-boot'] = metadata.createSpringBootBom('${spring-boot.version}')
}
model['mavenParentGroupId'] = parentPom.groupId
model['mavenParentArtifactId'] = parentPom.artifactId
model['mavenParentVersion'] = parentPom.version
model['includeSpringBootBom'] = parentPom.includeSpringBootBom
}
model['compileDependencies'] = filterDependencies(dependencies, Dependency.SCOPE_COMPILE) model['compileDependencies'] = filterDependencies(dependencies, Dependency.SCOPE_COMPILE)
model['runtimeDependencies'] = filterDependencies(dependencies, Dependency.SCOPE_RUNTIME) model['runtimeDependencies'] = filterDependencies(dependencies, Dependency.SCOPE_RUNTIME)
@@ -275,6 +277,14 @@ class ProjectGenerator {
"import $type$end" "import $type$end"
} }
private static isGradleBuild(ProjectRequest request) {
return 'gradle'.equals(request.build)
}
private static isMavenBuild(ProjectRequest request) {
return 'maven'.equals(request.build)
}
private static boolean isNewTestInfrastructureAvailable(ProjectRequest request) { private static boolean isNewTestInfrastructureAvailable(ProjectRequest request) {
VERSION_1_4_0_M2 VERSION_1_4_0_M2
.compareTo(Version.safeParse(request.bootVersion)) <= 0 .compareTo(Version.safeParse(request.bootVersion)) <= 0

View File

@@ -62,11 +62,13 @@ abstract class AbstractProjectGeneratorTests {
protected PomAssert generateMavenPom(ProjectRequest request) { protected PomAssert generateMavenPom(ProjectRequest request) {
request.type = 'maven-build'
def content = new String(projectGenerator.generateMavenPom(request)) def content = new String(projectGenerator.generateMavenPom(request))
new PomAssert(content).validateProjectRequest(request) new PomAssert(content).validateProjectRequest(request)
} }
protected GradleBuildAssert generateGradleBuild(ProjectRequest request) { protected GradleBuildAssert generateGradleBuild(ProjectRequest request) {
request.type = 'gradle-build'
def content = new String(projectGenerator.generateGradleBuild(request)) def content = new String(projectGenerator.generateGradleBuild(request))
new GradleBuildAssert(content).validateProjectRequest(request) new GradleBuildAssert(content).validateProjectRequest(request)
} }

View File

@@ -345,6 +345,20 @@ class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
.hasBomsCount(1) .hasBomsCount(1)
} }
@Test
void gradleBuildWithCustomParentPomAndSpringBootBom() {
def metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup('core', 'web', 'security', 'data-jpa')
.setMavenParent('com.foo', 'foo-parent', '1.0.0-SNAPSHOT', true)
.build()
applyMetadata(metadata)
def request = createProjectRequest('web')
request.bootVersion = '1.0.2.RELEASE'
generateGradleBuild(request)
.doesNotContain("ext['spring-boot.version'] = '1.0.2.RELEASE'")
.doesNotContain("mavenBom \"org.springframework.boot:spring-boot-dependencies:1.0.2.RELEASE\"")
}
@Test @Test
void gradleBuildWithBootSnapshot() { void gradleBuildWithBootSnapshot() {
def request = createProjectRequest('web') def request = createProjectRequest('web')
@@ -614,7 +628,7 @@ class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
def request = createProjectRequest('web') def request = createProjectRequest('web')
request.type = 'foo-bar' request.type = 'foo-bar'
try { try {
generateMavenPom(request) generateProject(request)
fail("Should have failed to generate project") fail("Should have failed to generate project")
} catch (InvalidProjectRequestException ex) { } catch (InvalidProjectRequestException ex) {
assertThat ex.message, containsString('foo-bar') assertThat ex.message, containsString('foo-bar')