mirror of
https://gitee.com/dcren/initializr.git
synced 2026-03-18 21:09:43 +08:00
Associate property to bom version
This commit allows to specify a property for the version of a BOM. If that value is defined, a version property is automatically added to the build to allow to easily configure the value. Closes gh-181
This commit is contained in:
@@ -16,6 +16,9 @@
|
||||
|
||||
package io.spring.initializr.generator
|
||||
|
||||
import io.spring.initializr.metadata.BillOfMaterials
|
||||
import io.spring.initializr.metadata.Dependency
|
||||
import io.spring.initializr.test.metadata.InitializrMetadataTestBuilder
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.junit.runners.Parameterized
|
||||
@@ -69,7 +72,6 @@ class ProjectGeneratorBuildTests extends AbstractProjectGeneratorTests {
|
||||
private void testStandardJar(def language) {
|
||||
def request = createProjectRequest()
|
||||
request.language = language
|
||||
request.type = "$build-project"
|
||||
def project = generateProject(request)
|
||||
project.sourceCodeAssert("$fileName")
|
||||
.equalsTo(new ClassPathResource("project/$language/standard/$assertFileName"))
|
||||
@@ -94,7 +96,6 @@ class ProjectGeneratorBuildTests extends AbstractProjectGeneratorTests {
|
||||
def request = createProjectRequest('web')
|
||||
request.packaging = 'war'
|
||||
request.language = language
|
||||
request.type = "$build-project"
|
||||
def project = generateProject(request)
|
||||
project.sourceCodeAssert("$fileName")
|
||||
.equalsTo(new ClassPathResource("project/$language/war/$assertFileName"))
|
||||
@@ -103,7 +104,6 @@ class ProjectGeneratorBuildTests extends AbstractProjectGeneratorTests {
|
||||
@Test
|
||||
public void versionOverride() {
|
||||
def request = createProjectRequest('web')
|
||||
request.type = "$build-project"
|
||||
request.buildProperties.versions['spring-foo.version'] = {'0.1.0.RELEASE'}
|
||||
request.buildProperties.versions['spring-bar.version'] = {'0.2.0.RELEASE'}
|
||||
def project = generateProject(request)
|
||||
@@ -111,4 +111,26 @@ class ProjectGeneratorBuildTests extends AbstractProjectGeneratorTests {
|
||||
.equalsTo(new ClassPathResource("project/$build/version-override-$assertFileName"))
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bomWithVersionProperty() {
|
||||
def foo = new Dependency(id: 'foo', groupId: 'org.acme', artifactId: 'foo', bom: 'the-bom')
|
||||
def bom = new BillOfMaterials(groupId: 'org.acme', artifactId: 'foo-bom',
|
||||
version: '1.3.3', versionProperty: 'foo.version')
|
||||
def metadata = InitializrMetadataTestBuilder.withDefaults()
|
||||
.addDependencyGroup('foo', foo)
|
||||
.addBom('the-bom', bom).build()
|
||||
applyMetadata(metadata)
|
||||
def request = createProjectRequest('foo')
|
||||
def project = generateProject(request)
|
||||
project.sourceCodeAssert("$fileName")
|
||||
.equalsTo(new ClassPathResource("project/$build/bom-property-$assertFileName"))
|
||||
}
|
||||
|
||||
@Override
|
||||
ProjectRequest createProjectRequest(String... styles) {
|
||||
def request = super.createProjectRequest(styles)
|
||||
request.type = "$build-project"
|
||||
request
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import org.junit.Test
|
||||
import org.junit.rules.ExpectedException
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo
|
||||
import static org.hamcrest.CoreMatchers.nullValue
|
||||
import static org.hamcrest.CoreMatchers.sameInstance
|
||||
import static org.junit.Assert.assertThat
|
||||
|
||||
@@ -45,7 +46,8 @@ class BillOfMaterialsTests {
|
||||
@Test
|
||||
void resolveSimpleRange() {
|
||||
BillOfMaterials bom = new BillOfMaterials(groupId: 'com.example', artifactId: 'bom',
|
||||
version: '1.0.0', repositories: ['repo-main'], additionalBoms: ['bom-main'])
|
||||
version: '1.0.0', versionProperty: "bom.version",
|
||||
repositories: ['repo-main'], additionalBoms: ['bom-main'])
|
||||
bom.mappings << new BillOfMaterials.Mapping(versionRange: '[1.2.0.RELEASE,1.3.0.M1)',
|
||||
version: '1.1.0')
|
||||
bom.validate()
|
||||
@@ -53,6 +55,7 @@ class BillOfMaterialsTests {
|
||||
assertThat(resolved.groupId, equalTo('com.example'))
|
||||
assertThat(resolved.artifactId, equalTo('bom'))
|
||||
assertThat(resolved.version, equalTo('1.1.0'))
|
||||
assertThat(resolved.versionProperty, equalTo('bom.version'))
|
||||
assertThat(resolved.repositories.size(), equalTo(1))
|
||||
assertThat(resolved.repositories[0], equalTo('repo-main'))
|
||||
assertThat(resolved.additionalBoms.size(), equalTo(1))
|
||||
@@ -70,12 +73,27 @@ class BillOfMaterialsTests {
|
||||
assertThat(resolved.groupId, equalTo('com.example'))
|
||||
assertThat(resolved.artifactId, equalTo('bom'))
|
||||
assertThat(resolved.version, equalTo('1.1.0'))
|
||||
assertThat(resolved.versionProperty, nullValue())
|
||||
assertThat(resolved.repositories.size(), equalTo(1))
|
||||
assertThat(resolved.repositories[0], equalTo('repo-foo'))
|
||||
assertThat(resolved.additionalBoms.size(), equalTo(1))
|
||||
assertThat(resolved.additionalBoms[0], equalTo('bom-foo'))
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolveRangeOverrideAndMapping() {
|
||||
BillOfMaterials bom = new BillOfMaterials(groupId: 'com.example',
|
||||
artifactId: 'bom', version: '1.0.0', versionProperty: 'example.version')
|
||||
bom.mappings << new BillOfMaterials.Mapping(versionRange: '[1.2.0.RELEASE,1.3.0.M1)',
|
||||
version: '1.1.0')
|
||||
bom.validate()
|
||||
BillOfMaterials resolved = bom.resolve(Version.parse('1.2.3.RELEASE'))
|
||||
assertThat(resolved.groupId, equalTo('com.example'))
|
||||
assertThat(resolved.artifactId, equalTo('bom'))
|
||||
assertThat(resolved.version, equalTo('1.1.0'))
|
||||
assertThat(resolved.versionProperty, equalTo('example.version'))
|
||||
}
|
||||
|
||||
@Test
|
||||
void noRangeAvailable() {
|
||||
BillOfMaterials bom = new BillOfMaterials(groupId: 'com.example', artifactId: 'bom')
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
buildscript {
|
||||
ext {
|
||||
springBootVersion = '1.2.3.RELEASE'
|
||||
}
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
|
||||
classpath('io.spring.gradle:dependency-management-plugin:0.5.1.RELEASE')
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'java'
|
||||
apply plugin: 'eclipse'
|
||||
apply plugin: 'spring-boot'
|
||||
apply plugin: 'io.spring.dependency-management'
|
||||
|
||||
jar {
|
||||
baseName = 'demo'
|
||||
version = '0.0.1-SNAPSHOT'
|
||||
}
|
||||
sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
|
||||
ext['foo.version'] = '1.3.3'
|
||||
|
||||
dependencies {
|
||||
compile('org.acme:foo')
|
||||
testCompile('org.springframework.boot:spring-boot-starter-test')
|
||||
}
|
||||
|
||||
dependencyManagement {
|
||||
imports {
|
||||
mavenBom "org.acme:foo-bom:${foo.version}"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
eclipse {
|
||||
classpath {
|
||||
containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
|
||||
containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.example</groupId>
|
||||
<artifactId>demo</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>demo</name>
|
||||
<description>Demo project for Spring Boot</description>
|
||||
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>1.2.3.RELEASE</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<foo.version>1.3.3</foo.version>
|
||||
<java.version>1.8</java.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.acme</groupId>
|
||||
<artifactId>foo</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.acme</groupId>
|
||||
<artifactId>foo-bom</artifactId>
|
||||
<version>${foo.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
</project>
|
||||
Reference in New Issue
Block a user