mirror of
https://gitee.com/dcren/initializr.git
synced 2025-04-05 17:38:06 +08:00
Make sure that core Gradle plugins are applied first
Closes gh-1343
This commit is contained in:
parent
186fdeaa2f
commit
59935b8175
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2022 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.
|
||||
@ -16,6 +16,8 @@
|
||||
|
||||
package io.spring.initializr.generator.spring.build;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.Build;
|
||||
|
||||
import org.springframework.core.Ordered;
|
||||
@ -38,4 +40,39 @@ public interface BuildCustomizer<B extends Build> extends Ordered {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link BuildCustomizer} that is ordered with the specified {@code order}
|
||||
* value.
|
||||
* @param order the order of the customizer
|
||||
* @param customizer the customizer
|
||||
* @param <B> the type of the build
|
||||
* @return a {@link BuildCustomizer} with the specified order
|
||||
*/
|
||||
static <B extends Build> BuildCustomizer<B> ordered(int order, Consumer<B> customizer) {
|
||||
return new OrderedBuildCustomizer<>(order, customizer);
|
||||
}
|
||||
|
||||
class OrderedBuildCustomizer<B extends Build> implements BuildCustomizer<B> {
|
||||
|
||||
private final int order;
|
||||
|
||||
private final Consumer<B> customizer;
|
||||
|
||||
public OrderedBuildCustomizer(int order, Consumer<B> customizer) {
|
||||
this.order = order;
|
||||
this.customizer = customizer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void customize(B build) {
|
||||
this.customizer.accept(build);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return this.order;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ import io.spring.initializr.generator.condition.ConditionalOnLanguage;
|
||||
import io.spring.initializr.generator.condition.ConditionalOnPackaging;
|
||||
import io.spring.initializr.generator.condition.ConditionalOnPlatformVersion;
|
||||
import io.spring.initializr.generator.io.IndentingWriterFactory;
|
||||
import io.spring.initializr.generator.language.groovy.GroovyLanguage;
|
||||
import io.spring.initializr.generator.language.java.JavaLanguage;
|
||||
import io.spring.initializr.generator.packaging.war.WarPackaging;
|
||||
import io.spring.initializr.generator.project.ProjectDescription;
|
||||
@ -42,6 +43,7 @@ import io.spring.initializr.metadata.InitializrMetadata;
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.Ordered;
|
||||
|
||||
/**
|
||||
* Configuration for contributions specific to the generation of a project that will use
|
||||
@ -54,6 +56,10 @@ import org.springframework.context.annotation.Configuration;
|
||||
@ConditionalOnBuildSystem(GradleBuildSystem.ID)
|
||||
public class GradleProjectGenerationConfiguration {
|
||||
|
||||
private static final int LANGUAGE_PLUGINS_ORDER = Ordered.HIGHEST_PRECEDENCE + 5;
|
||||
|
||||
private static final int PACKAGING_PLUGINS_ORDER = Ordered.HIGHEST_PRECEDENCE + 10;
|
||||
|
||||
private static final int TEST_ORDER = 100;
|
||||
|
||||
private final IndentingWriterFactory indentingWriterFactory;
|
||||
@ -91,13 +97,19 @@ public class GradleProjectGenerationConfiguration {
|
||||
@Bean
|
||||
@ConditionalOnLanguage(JavaLanguage.ID)
|
||||
public BuildCustomizer<GradleBuild> javaPluginContributor() {
|
||||
return (build) -> build.plugins().add("java");
|
||||
return BuildCustomizer.ordered(LANGUAGE_PLUGINS_ORDER, (build) -> build.plugins().add("java"));
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnLanguage(GroovyLanguage.ID)
|
||||
public BuildCustomizer<GradleBuild> groovyPluginContributor() {
|
||||
return BuildCustomizer.ordered(LANGUAGE_PLUGINS_ORDER, (build) -> build.plugins().add("groovy"));
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnPackaging(WarPackaging.ID)
|
||||
public BuildCustomizer<GradleBuild> warPluginContributor() {
|
||||
return (build) -> build.plugins().add("war");
|
||||
return BuildCustomizer.ordered(PACKAGING_PLUGINS_ORDER, (build) -> build.plugins().add("war"));
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
@ -1,34 +0,0 @@
|
||||
/*
|
||||
* Copyright 2012-2019 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
|
||||
*
|
||||
* https://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.generator.spring.code.groovy;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
|
||||
import io.spring.initializr.generator.spring.build.BuildCustomizer;
|
||||
|
||||
/**
|
||||
* {@link BuildCustomizer} for Groovy projects build with Gradle.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
class GroovyGradleBuildCustomizer implements BuildCustomizer<GradleBuild> {
|
||||
|
||||
@Override
|
||||
public void customize(GradleBuild build) {
|
||||
build.plugins().add("groovy");
|
||||
}
|
||||
|
||||
}
|
@ -19,7 +19,6 @@ package io.spring.initializr.generator.spring.code.groovy;
|
||||
import java.lang.reflect.Modifier;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.Build;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
|
||||
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem;
|
||||
import io.spring.initializr.generator.condition.ConditionalOnBuildSystem;
|
||||
import io.spring.initializr.generator.condition.ConditionalOnPackaging;
|
||||
@ -116,18 +115,4 @@ class GroovyProjectGenerationDefaultContributorsConfiguration {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Configuration for Groovy projects built with Gradle.
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnBuildSystem(GradleBuildSystem.ID)
|
||||
static class GroovyGradleProjectConfiguration {
|
||||
|
||||
@Bean
|
||||
GroovyGradleBuildCustomizer groovyBuildCustomizer() {
|
||||
return new GroovyGradleBuildCustomizer();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -113,9 +113,9 @@ class GradleKtsProjectGenerationConfigurationTests {
|
||||
assertThat(project).textFile("build.gradle.kts")
|
||||
.containsExactly(// @formatter:off
|
||||
"plugins {",
|
||||
" java",
|
||||
" id(\"org.springframework.boot\") version \"2.4.0\"",
|
||||
" id(\"io.spring.dependency-management\") version \"1.0.6.RELEASE\"",
|
||||
" java",
|
||||
"}",
|
||||
"",
|
||||
"group = \"com.example\"",
|
||||
|
@ -24,6 +24,7 @@ import io.spring.initializr.generator.buildsystem.Dependency;
|
||||
import io.spring.initializr.generator.buildsystem.DependencyScope;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GroovyDslGradleBuildWriter;
|
||||
import io.spring.initializr.generator.language.groovy.GroovyLanguage;
|
||||
import io.spring.initializr.generator.language.java.JavaLanguage;
|
||||
import io.spring.initializr.generator.packaging.war.WarPackaging;
|
||||
import io.spring.initializr.generator.project.MutableProjectDescription;
|
||||
@ -110,9 +111,9 @@ class GradleProjectGenerationConfigurationTests {
|
||||
assertThat(project).textFile("build.gradle").containsExactly(
|
||||
// @formatter:off
|
||||
"plugins {",
|
||||
" id 'java'",
|
||||
" id 'org.springframework.boot' version '2.4.0'",
|
||||
" id 'io.spring.dependency-management' version '1.0.6.RELEASE'",
|
||||
" id 'java'",
|
||||
"}",
|
||||
"",
|
||||
"group = 'com.example'",
|
||||
@ -134,6 +135,15 @@ class GradleProjectGenerationConfigurationTests {
|
||||
"}"); // @formatter:on
|
||||
}
|
||||
|
||||
@Test
|
||||
void groovyPluginIsAppliedWhenBuildingProjectThatUsesGroovyLanguage() {
|
||||
MutableProjectDescription description = new MutableProjectDescription();
|
||||
description.setPlatformVersion(Version.parse("2.4.0.RELEASE"));
|
||||
description.setLanguage(new GroovyLanguage());
|
||||
ProjectStructure project = this.projectTester.generate(description);
|
||||
assertThat(project).textFile("build.gradle").lines().containsOnlyOnce(" id 'groovy'");
|
||||
}
|
||||
|
||||
@Test
|
||||
void warPluginIsAppliedWhenBuildingProjectThatUsesWarPackaging() {
|
||||
MutableProjectDescription description = new MutableProjectDescription();
|
||||
|
@ -1,39 +0,0 @@
|
||||
/*
|
||||
* Copyright 2012-2020 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
|
||||
*
|
||||
* https://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.generator.spring.code.groovy;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Tests for {@link GroovyGradleBuildCustomizer}.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
class GroovyGradleBuildCustomizerTests {
|
||||
|
||||
@Test
|
||||
void groovyPluginIsConfigured() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
new GroovyGradleBuildCustomizer().customize(build);
|
||||
assertThat(build.plugins().values()).singleElement()
|
||||
.satisfies((plugin) -> assertThat(plugin.getId()).isEqualTo("groovy"));
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
java
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
java
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
java
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
java
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
java
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
java
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
java
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
java
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
java
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
java
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot' version '2.4.0-M1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
java
|
||||
id("org.springframework.boot") version "2.4.0-M1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
java
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
java
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
java
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
id 'groovy'
|
||||
id 'org.springframework.boot' version '3.0.0'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'groovy'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
groovy
|
||||
id("org.springframework.boot") version "3.0.0"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
groovy
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
id 'groovy'
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'groovy'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
groovy
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
groovy
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,8 +1,8 @@
|
||||
plugins {
|
||||
id 'groovy'
|
||||
id 'war'
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'war'
|
||||
id 'groovy'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,8 +1,8 @@
|
||||
plugins {
|
||||
groovy
|
||||
war
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
war
|
||||
groovy
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,7 +1,7 @@
|
||||
plugins {
|
||||
java
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
java
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,8 +1,8 @@
|
||||
plugins {
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'java'
|
||||
id 'war'
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
}
|
||||
|
||||
group = 'com.example'
|
||||
|
@ -1,8 +1,8 @@
|
||||
plugins {
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
java
|
||||
war
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
|
@ -1,9 +1,9 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
id 'war'
|
||||
id 'org.springframework.boot' version '2.4.1'
|
||||
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
|
||||
id 'war'
|
||||
id 'org.jetbrains.kotlin.jvm' version '1.1.1'
|
||||
id 'org.jetbrains.kotlin.plugin.spring' version '1.1.1'
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
war
|
||||
id("org.springframework.boot") version "2.4.1"
|
||||
id("io.spring.dependency-management") version "1.0.6.RELEASE"
|
||||
war
|
||||
kotlin("jvm") version "1.1.1"
|
||||
kotlin("plugin.spring") version "1.1.1"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user