mirror of
https://gitee.com/dcren/initializr.git
synced 2025-07-15 23:13:30 +08:00
Replace reactor extension
This commit removes the reactor extension as it is no longer necessary given all the customizations have been added in Spring Boot now. Instead, Java8 is now forced for any use of Spring Boot 2.0 and later. Arguably, this should have been the case since the beginning.
This commit is contained in:
parent
2097638505
commit
eb5385615b
@ -1,31 +0,0 @@
|
||||
package io.spring.initializr.service.extension
|
||||
|
||||
import io.spring.initializr.generator.ProjectRequest
|
||||
import io.spring.initializr.generator.ProjectRequestPostProcessorAdapter
|
||||
import io.spring.initializr.metadata.InitializrMetadata
|
||||
|
||||
import org.springframework.stereotype.Component
|
||||
|
||||
/**
|
||||
* The "web-reactive" starter is experimental as Spring Boot hasn't integrated Spring 5
|
||||
* yet. This {@link io.spring.initializr.generator.ProjectRequestPostProcessor} forces
|
||||
* Java 8 as well as Spring 5 and Reactor 3.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
@Component
|
||||
class ReactiveProjectRequestPostProcessor extends ProjectRequestPostProcessorAdapter {
|
||||
|
||||
@Override
|
||||
void postProcessAfterResolution(ProjectRequest request, InitializrMetadata metadata) {
|
||||
if (request.resolvedDependencies.find { it.id.equals('experimental-web-reactive') }) {
|
||||
request.javaVersion = '1.8'
|
||||
|
||||
// No need to override those versions with Gradle
|
||||
if ('maven'.equals(request.build)) {
|
||||
request.buildProperties.versions['reactor.version'] = { '3.0.3.RELEASE' }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright 2012-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.spring.initializr.service.extension
|
||||
|
||||
import io.spring.initializr.generator.ProjectRequest
|
||||
import io.spring.initializr.generator.ProjectRequestPostProcessorAdapter
|
||||
import io.spring.initializr.metadata.InitializrMetadata
|
||||
import io.spring.initializr.util.Version
|
||||
|
||||
import org.springframework.stereotype.Component
|
||||
|
||||
/**
|
||||
* As of Spring Boot 2.0, Java8 is mandatory so this extension makes sure that the
|
||||
* java version is forced.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
@Component
|
||||
class SpringBoot2RequestPostProcessor extends ProjectRequestPostProcessorAdapter {
|
||||
|
||||
private static final VERSION_2_0_0_M1 = Version.parse('2.0.0.M1')
|
||||
|
||||
@Override
|
||||
void postProcessAfterResolution(ProjectRequest request, InitializrMetadata metadata) {
|
||||
if (VERSION_2_0_0_M1 <= Version.safeParse(request.bootVersion)) {
|
||||
request.javaVersion = '1.8'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,161 +0,0 @@
|
||||
package io.spring.initializr.service.extension
|
||||
|
||||
import io.spring.initializr.generator.ProjectGenerator
|
||||
import io.spring.initializr.generator.ProjectRequest
|
||||
import io.spring.initializr.metadata.InitializrMetadata
|
||||
import io.spring.initializr.metadata.InitializrMetadataBuilder
|
||||
import io.spring.initializr.metadata.InitializrMetadataProvider
|
||||
import io.spring.initializr.metadata.InitializrProperties
|
||||
import io.spring.initializr.test.generator.GradleBuildAssert
|
||||
import io.spring.initializr.test.generator.PomAssert
|
||||
import io.spring.initializr.web.support.DefaultInitializrMetadataProvider
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.boot.test.context.TestConfiguration
|
||||
import org.springframework.context.annotation.Bean
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner
|
||||
import org.springframework.web.client.RestTemplate
|
||||
|
||||
/**
|
||||
* Tests for {@link ReactiveProjectRequestPostProcessor}.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner)
|
||||
@SpringBootTest
|
||||
class ReactiveProjectRequestPostProcessorTests {
|
||||
|
||||
@Autowired
|
||||
private ProjectGenerator projectGenerator
|
||||
|
||||
@Autowired
|
||||
private InitializrMetadataProvider metadataProvider
|
||||
|
||||
@Test
|
||||
void java8IsMandatoryMaven() {
|
||||
ProjectRequest request = createProjectRequest('experimental-web-reactive')
|
||||
request.bootVersion = '2.0.0.BUILD-SNAPSHOT'
|
||||
request.javaVersion = '1.7'
|
||||
generateMavenPom(request).hasJavaVersion('1.8')
|
||||
}
|
||||
|
||||
@Test
|
||||
void java8IsMandatoryGradle() {
|
||||
ProjectRequest request = createProjectRequest('experimental-web-reactive')
|
||||
request.bootVersion = '2.0.0.BUILD-SNAPSHOT'
|
||||
request.javaVersion = '1.7'
|
||||
generateGradleBuild(request).hasJavaVersion('1.8')
|
||||
}
|
||||
|
||||
@Test
|
||||
void versionsAreOverriddenMaven() {
|
||||
ProjectRequest request = createProjectRequest('experimental-web-reactive')
|
||||
request.bootVersion = '2.0.0.BUILD-SNAPSHOT'
|
||||
generateMavenPom(request)
|
||||
.hasProperty('reactor.version', '3.0.3.RELEASE')
|
||||
}
|
||||
|
||||
@Test
|
||||
void versionsAreNorOverriddenGradle() {
|
||||
ProjectRequest request = createProjectRequest('experimental-web-reactive')
|
||||
request.bootVersion = '2.0.0.BUILD-SNAPSHOT'
|
||||
generateGradleBuild(request)
|
||||
.doesNotContain("ext['spring.version'] = '5.0.0.BUILD-SNAPSHOT'")
|
||||
.doesNotContain("ext['reactor.version'] = '3.0.3.RELEASE'")
|
||||
}
|
||||
|
||||
@Test
|
||||
void bomIsAddedMaven() {
|
||||
ProjectRequest request = createProjectRequest('experimental-web-reactive')
|
||||
request.bootVersion = '2.0.0.RELEASE'
|
||||
generateMavenPom(request).hasBom('org.springframework.boot.experimental',
|
||||
'spring-boot-dependencies-web-reactive', '0.1.0.BUILD-SNAPSHOT')
|
||||
}
|
||||
|
||||
@Test
|
||||
void bomIsAddedWithSnapshotMaven() {
|
||||
ProjectRequest request = createProjectRequest('experimental-web-reactive')
|
||||
request.bootVersion = '2.0.0.BUILD-SNAPSHOT'
|
||||
generateMavenPom(request).hasBom('org.springframework.boot.experimental',
|
||||
'spring-boot-dependencies-web-reactive', '0.1.0.BUILD-SNAPSHOT')
|
||||
}
|
||||
|
||||
@Test
|
||||
void bomIsAddedGradle() {
|
||||
ProjectRequest request = createProjectRequest('experimental-web-reactive')
|
||||
request.bootVersion = '2.0.0.RELEASE'
|
||||
generateGradleBuild(request).contains("dependencyManagement {")
|
||||
.contains("imports {")
|
||||
.contains("mavenBom \"org.springframework.boot.experimental:spring-boot-dependencies-web-reactive:0.1.0.BUILD-SNAPSHOT\"")
|
||||
}
|
||||
|
||||
@Test
|
||||
void bomIsAddedWithSnapshotGradle() {
|
||||
ProjectRequest request = createProjectRequest('experimental-web-reactive')
|
||||
request.bootVersion = '2.0.0.BUILD-SNAPSHOT'
|
||||
generateGradleBuild(request).contains("dependencyManagement {")
|
||||
.contains("imports {")
|
||||
.contains("mavenBom \"org.springframework.boot.experimental:spring-boot-dependencies-web-reactive:0.1.0.BUILD-SNAPSHOT\"")
|
||||
}
|
||||
|
||||
@Test
|
||||
void snapshotRepoIsAddedIfNecessary() {
|
||||
ProjectRequest request = createProjectRequest('experimental-web-reactive')
|
||||
request.bootVersion = '2.0.0.RELEASE'
|
||||
generateMavenPom(request).hasRepository('spring-snapshots', 'Spring Snapshots',
|
||||
'https://repo.spring.io/snapshot', true)
|
||||
}
|
||||
|
||||
@Test
|
||||
void simpleProjectUnaffected() {
|
||||
ProjectRequest request = createProjectRequest('web')
|
||||
request.javaVersion = '1.7'
|
||||
request.buildProperties.versions['spring.version'] = { '3.2.7.RELEASE' }
|
||||
generateMavenPom(request).hasJavaVersion('1.7')
|
||||
.hasProperty('spring.version', '3.2.7.RELEASE')
|
||||
.hasNoProperty('reactor.version')
|
||||
}
|
||||
|
||||
|
||||
private ProjectRequest createProjectRequest(String... styles) {
|
||||
def request = new ProjectRequest()
|
||||
request.initialize(metadataProvider.get())
|
||||
request.style.addAll Arrays.asList(styles)
|
||||
request
|
||||
}
|
||||
|
||||
|
||||
private PomAssert generateMavenPom(ProjectRequest request) {
|
||||
request.type = 'maven-build'
|
||||
def content = new String(projectGenerator.generateMavenPom(request))
|
||||
new PomAssert(content)
|
||||
}
|
||||
|
||||
private GradleBuildAssert generateGradleBuild(ProjectRequest request) {
|
||||
request.type = 'gradle-build'
|
||||
def content = new String(projectGenerator.generateGradleBuild(request))
|
||||
new GradleBuildAssert(content)
|
||||
}
|
||||
|
||||
@TestConfiguration
|
||||
static class Config {
|
||||
|
||||
@Bean
|
||||
InitializrMetadataProvider initializrMetadataProvider(InitializrProperties properties) {
|
||||
new DefaultInitializrMetadataProvider(
|
||||
InitializrMetadataBuilder.fromInitializrProperties(properties).build(),
|
||||
new RestTemplate()) {
|
||||
@Override
|
||||
protected void updateInitializrMetadata(InitializrMetadata metadata) {
|
||||
// Disable metadata fetching from spring.io
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright 2012-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.spring.initializr.service.extension
|
||||
|
||||
import io.spring.initializr.generator.ProjectGenerator
|
||||
import io.spring.initializr.generator.ProjectRequest
|
||||
import io.spring.initializr.metadata.InitializrMetadataProvider
|
||||
import io.spring.initializr.test.generator.GradleBuildAssert
|
||||
import io.spring.initializr.test.generator.PomAssert
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner
|
||||
|
||||
/**
|
||||
* Tests for {@link SpringBoot2RequestPostProcessor}.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner)
|
||||
@SpringBootTest
|
||||
class SpringBoot2RequestPostProcessorTests {
|
||||
|
||||
@Autowired
|
||||
private ProjectGenerator projectGenerator
|
||||
|
||||
@Autowired
|
||||
private InitializrMetadataProvider metadataProvider
|
||||
|
||||
@Test
|
||||
void java8IsMandatoryMaven() {
|
||||
ProjectRequest request = createProjectRequest('web')
|
||||
request.bootVersion = '2.0.0.BUILD-SNAPSHOT'
|
||||
request.javaVersion = '1.7'
|
||||
generateMavenPom(request).hasJavaVersion('1.8')
|
||||
}
|
||||
|
||||
@Test
|
||||
void java8IsMandatoryGradle() {
|
||||
ProjectRequest request = createProjectRequest('data-jpa')
|
||||
request.bootVersion = '2.0.0.M3'
|
||||
request.javaVersion = '1.7'
|
||||
generateGradleBuild(request).hasJavaVersion('1.8')
|
||||
}
|
||||
|
||||
private PomAssert generateMavenPom(ProjectRequest request) {
|
||||
request.type = 'maven-build'
|
||||
def content = new String(projectGenerator.generateMavenPom(request))
|
||||
new PomAssert(content)
|
||||
}
|
||||
|
||||
private GradleBuildAssert generateGradleBuild(ProjectRequest request) {
|
||||
request.type = 'gradle-build'
|
||||
def content = new String(projectGenerator.generateGradleBuild(request))
|
||||
new GradleBuildAssert(content)
|
||||
}
|
||||
|
||||
private ProjectRequest createProjectRequest(String... styles) {
|
||||
def request = new ProjectRequest()
|
||||
request.initialize(metadataProvider.get())
|
||||
request.style.addAll Arrays.asList(styles)
|
||||
request
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user