mirror of
https://gitee.com/dcren/initializr.git
synced 2026-06-25 14:54:04 +08:00
Harmonize Gradle build to use containers
See gh-996
This commit is contained in:
@@ -35,7 +35,7 @@ public class GradleAnnotationProcessorScopeBuildCustomizer implements BuildCusto
|
||||
boolean annotationProcessorUsed = build.dependencies().items()
|
||||
.anyMatch((dependency) -> dependency.getScope() == DependencyScope.ANNOTATION_PROCESSOR);
|
||||
if (annotationProcessorUsed) {
|
||||
build.customizeConfiguration("compileOnly",
|
||||
build.configurations().customize("compileOnly",
|
||||
(configuration) -> configuration.extendsFrom("annotationProcessor"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ public class GradleConfigurationBuildCustomizer implements BuildCustomizer<Gradl
|
||||
.anyMatch((dependency) -> DependencyScope.PROVIDED_RUNTIME.equals(dependency.getScope()));
|
||||
boolean war = build.plugins().values().anyMatch((plugin) -> plugin.getId().equals("war"));
|
||||
if (providedRuntimeUsed && !war) {
|
||||
build.addConfiguration("providedRuntime");
|
||||
build.configurations().add("providedRuntime");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -213,7 +213,7 @@ public class GradleProjectGenerationConfiguration {
|
||||
@Bean
|
||||
@ConditionalOnPlatformVersion("2.2.0.M3")
|
||||
BuildCustomizer<GradleBuild> testTaskContributor() {
|
||||
return (build) -> build.customizeTask("test", (test) -> test.invoke("useJUnitPlatform"));
|
||||
return (build) -> build.tasks().customize("test", (test) -> test.invoke("useJUnitPlatform"));
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -246,7 +246,7 @@ public class GradleProjectGenerationConfiguration {
|
||||
@Bean
|
||||
@ConditionalOnPlatformVersion("2.2.0.M3")
|
||||
BuildCustomizer<GradleBuild> testTaskContributor() {
|
||||
return (build) -> build.customizeTasksWithType("Test", (test) -> test.invoke("useJUnitPlatform"));
|
||||
return (build) -> build.tasks().customizeWithType("Test", (test) -> test.invoke("useJUnitPlatform"));
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -18,7 +18,7 @@ package io.spring.initializr.generator.spring.code.kotlin;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomization;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleTask;
|
||||
import io.spring.initializr.generator.spring.build.BuildCustomizer;
|
||||
|
||||
/**
|
||||
@@ -33,12 +33,12 @@ class GroovyDslKotlinGradleBuildCustomizer extends KotlinGradleBuildCustomizer {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void customizeKotlinOptions(KotlinProjectSettings settings, TaskCustomization compile) {
|
||||
protected void customizeKotlinOptions(KotlinProjectSettings settings, GradleTask.Builder compile) {
|
||||
compile.nested("kotlinOptions", (kotlinOptions) -> {
|
||||
String compilerArgs = settings.getCompilerArgs().stream().map((arg) -> "'" + arg + "'")
|
||||
.collect(Collectors.joining(", "));
|
||||
kotlinOptions.set("freeCompilerArgs", "[" + compilerArgs + "]");
|
||||
kotlinOptions.set("jvmTarget", "'" + settings.getJvmTarget() + "'");
|
||||
kotlinOptions.attribute("freeCompilerArgs", "[" + compilerArgs + "]");
|
||||
kotlinOptions.attribute("jvmTarget", "'" + settings.getJvmTarget() + "'");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ package io.spring.initializr.generator.spring.code.kotlin;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomization;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleTask;
|
||||
import io.spring.initializr.generator.spring.build.BuildCustomizer;
|
||||
|
||||
/**
|
||||
@@ -33,12 +33,12 @@ class KotlinDslKotlinGradleBuildCustomizer extends KotlinGradleBuildCustomizer {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void customizeKotlinOptions(KotlinProjectSettings settings, TaskCustomization compile) {
|
||||
protected void customizeKotlinOptions(KotlinProjectSettings settings, GradleTask.Builder compile) {
|
||||
compile.nested("kotlinOptions", (kotlinOptions) -> {
|
||||
String compilerArgs = settings.getCompilerArgs().stream().map((arg) -> "\"" + arg + "\"")
|
||||
.collect(Collectors.joining(", "));
|
||||
kotlinOptions.set("freeCompilerArgs", "listOf(" + compilerArgs + ")");
|
||||
kotlinOptions.set("jvmTarget", "\"" + settings.getJvmTarget() + "\"");
|
||||
kotlinOptions.attribute("freeCompilerArgs", "listOf(" + compilerArgs + ")");
|
||||
kotlinOptions.attribute("jvmTarget", "\"" + settings.getJvmTarget() + "\"");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
package io.spring.initializr.generator.spring.code.kotlin;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomization;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleTask;
|
||||
import io.spring.initializr.generator.spring.build.BuildCustomizer;
|
||||
|
||||
/**
|
||||
@@ -41,10 +41,10 @@ abstract class KotlinGradleBuildCustomizer implements BuildCustomizer<GradleBuil
|
||||
build.plugins().add("org.jetbrains.kotlin.jvm", (plugin) -> plugin.setVersion(this.settings.getVersion()));
|
||||
build.plugins().add("org.jetbrains.kotlin.plugin.spring",
|
||||
(plugin) -> plugin.setVersion(this.settings.getVersion()));
|
||||
build.customizeTasksWithType("org.jetbrains.kotlin.gradle.tasks.KotlinCompile",
|
||||
build.tasks().customizeWithType("org.jetbrains.kotlin.gradle.tasks.KotlinCompile",
|
||||
(compile) -> customizeKotlinOptions(this.settings, compile));
|
||||
}
|
||||
|
||||
protected abstract void customizeKotlinOptions(KotlinProjectSettings settings, TaskCustomization compile);
|
||||
protected abstract void customizeKotlinOptions(KotlinProjectSettings settings, GradleTask.Builder compile);
|
||||
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@ package io.spring.initializr.generator.spring.build.gradle;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.DependencyScope;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.ConfigurationCustomization;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -36,9 +35,10 @@ class GradleAnnotationProcessorScopeBuildCustomizerTests {
|
||||
build.dependencies().add("lib", "com.example", "lib", DependencyScope.COMPILE);
|
||||
build.dependencies().add("ap", "com.example", "model-generator", DependencyScope.ANNOTATION_PROCESSOR);
|
||||
customize(build);
|
||||
assertThat(build.getConfigurationCustomizations()).containsOnlyKeys("compileOnly");
|
||||
ConfigurationCustomization compileOnly = build.getConfigurationCustomizations().get("compileOnly");
|
||||
assertThat(compileOnly.getExtendsFrom()).containsOnly("annotationProcessor");
|
||||
assertThat(build.configurations().customizations()).hasOnlyOneElementSatisfying((configuration) -> {
|
||||
assertThat(configuration.getName()).isEqualTo("compileOnly");
|
||||
assertThat(configuration.getExtendsFrom()).containsOnly("annotationProcessor");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -47,7 +47,7 @@ class GradleAnnotationProcessorScopeBuildCustomizerTests {
|
||||
build.dependencies().add("lib", "com.example", "lib", DependencyScope.COMPILE);
|
||||
build.dependencies().add("another", "com.example", "another", DependencyScope.RUNTIME);
|
||||
customize(build);
|
||||
assertThat(build.getConfigurationCustomizations()).isEmpty();
|
||||
assertThat(build.configurations().isEmpty()).isTrue();
|
||||
}
|
||||
|
||||
private void customize(GradleBuild build) {
|
||||
|
||||
@@ -35,7 +35,7 @@ class GradleConfigurationBuildCustomizerTests {
|
||||
build.dependencies().add("lib", "com.example", "lib", DependencyScope.COMPILE);
|
||||
build.dependencies().add("servlet", "javax.servlet", "servlet-api", DependencyScope.PROVIDED_RUNTIME);
|
||||
customize(build);
|
||||
assertThat(build.getConfigurations()).containsOnly("providedRuntime");
|
||||
assertThat(build.configurations().names()).containsOnly("providedRuntime");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -45,7 +45,7 @@ class GradleConfigurationBuildCustomizerTests {
|
||||
build.dependencies().add("lib", "com.example", "lib", DependencyScope.COMPILE);
|
||||
build.dependencies().add("servlet", "javax.servlet", "servlet-api", DependencyScope.PROVIDED_RUNTIME);
|
||||
customize(build);
|
||||
assertThat(build.getConfigurationCustomizations()).isEmpty();
|
||||
assertThat(build.configurations().customizations()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -54,7 +54,7 @@ class GradleConfigurationBuildCustomizerTests {
|
||||
build.dependencies().add("lib", "com.example", "lib", DependencyScope.COMPILE);
|
||||
build.dependencies().add("another", "com.example", "another", DependencyScope.RUNTIME);
|
||||
customize(build);
|
||||
assertThat(build.getConfigurationCustomizations()).isEmpty();
|
||||
assertThat(build.configurations().customizations()).isEmpty();
|
||||
}
|
||||
|
||||
private void customize(GradleBuild build) {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
package io.spring.initializr.generator.spring.code.kotlin;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomization;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleTask;
|
||||
import org.assertj.core.groups.Tuple;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -44,21 +44,22 @@ class GroovyDslKotlinGradleBuildCustomizerTests {
|
||||
void kotlinCompilationTasksAreCustomized() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
new GroovyDslKotlinGradleBuildCustomizer(new SimpleKotlinProjectSettings("1.2.70")).customize(build);
|
||||
assertThat(build.getImportedTypes()).contains("org.jetbrains.kotlin.gradle.tasks.KotlinCompile");
|
||||
assertThat(build.getTasksWithTypeCustomizations()).hasSize(1);
|
||||
assertThat(build.getTasksWithTypeCustomizations()).containsKeys("KotlinCompile");
|
||||
assertKotlinOptions(build.getTasksWithTypeCustomizations().get("KotlinCompile"));
|
||||
assertThat(build.tasks().importedTypes()).contains("org.jetbrains.kotlin.gradle.tasks.KotlinCompile");
|
||||
assertThat(build.tasks().values()).hasOnlyOneElementSatisfying((task) -> {
|
||||
assertThat(task.getName()).isEqualTo("KotlinCompile");
|
||||
assertKotlinOptions(task);
|
||||
});
|
||||
}
|
||||
|
||||
private void assertKotlinOptions(TaskCustomization compileTask) {
|
||||
assertThat(compileTask.getAssignments()).isEmpty();
|
||||
private void assertKotlinOptions(GradleTask compileTask) {
|
||||
assertThat(compileTask.getAttributes()).isEmpty();
|
||||
assertThat(compileTask.getInvocations()).isEmpty();
|
||||
assertThat(compileTask.getNested()).hasSize(1);
|
||||
TaskCustomization kotlinOptions = compileTask.getNested().get("kotlinOptions");
|
||||
GradleTask kotlinOptions = compileTask.getNested().get("kotlinOptions");
|
||||
assertThat(kotlinOptions.getInvocations()).hasSize(0);
|
||||
assertThat(kotlinOptions.getNested()).hasSize(0);
|
||||
assertThat(kotlinOptions.getAssignments()).hasSize(2);
|
||||
assertThat(kotlinOptions.getAssignments()).containsEntry("freeCompilerArgs", "['-Xjsr305=strict']")
|
||||
assertThat(kotlinOptions.getAttributes()).hasSize(2);
|
||||
assertThat(kotlinOptions.getAttributes()).containsEntry("freeCompilerArgs", "['-Xjsr305=strict']")
|
||||
.containsEntry("jvmTarget", "'1.8'");
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
package io.spring.initializr.generator.spring.code.kotlin;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomization;
|
||||
import io.spring.initializr.generator.buildsystem.gradle.GradleTask;
|
||||
import org.assertj.core.groups.Tuple;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -43,21 +43,22 @@ class KotlinDslKotlinGradleBuildCustomizerTests {
|
||||
void kotlinCompilationTasksAreCustomized() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
new KotlinDslKotlinGradleBuildCustomizer(new SimpleKotlinProjectSettings("1.2.70")).customize(build);
|
||||
assertThat(build.getImportedTypes()).contains("org.jetbrains.kotlin.gradle.tasks.KotlinCompile");
|
||||
assertThat(build.getTasksWithTypeCustomizations()).hasSize(1);
|
||||
assertThat(build.getTasksWithTypeCustomizations()).containsKeys("KotlinCompile");
|
||||
assertKotlinOptions(build.getTasksWithTypeCustomizations().get("KotlinCompile"));
|
||||
assertThat(build.tasks().importedTypes()).contains("org.jetbrains.kotlin.gradle.tasks.KotlinCompile");
|
||||
assertThat(build.tasks().values()).hasOnlyOneElementSatisfying((task) -> {
|
||||
assertThat(task.getName()).isEqualTo("KotlinCompile");
|
||||
assertKotlinOptions(task);
|
||||
});
|
||||
}
|
||||
|
||||
private void assertKotlinOptions(TaskCustomization compileTask) {
|
||||
assertThat(compileTask.getAssignments()).isEmpty();
|
||||
private void assertKotlinOptions(GradleTask compileTask) {
|
||||
assertThat(compileTask.getAttributes()).isEmpty();
|
||||
assertThat(compileTask.getInvocations()).isEmpty();
|
||||
assertThat(compileTask.getNested()).hasSize(1);
|
||||
TaskCustomization kotlinOptions = compileTask.getNested().get("kotlinOptions");
|
||||
GradleTask kotlinOptions = compileTask.getNested().get("kotlinOptions");
|
||||
assertThat(kotlinOptions.getInvocations()).hasSize(0);
|
||||
assertThat(kotlinOptions.getNested()).hasSize(0);
|
||||
assertThat(kotlinOptions.getAssignments()).hasSize(2);
|
||||
assertThat(kotlinOptions.getAssignments()).containsEntry("freeCompilerArgs", "listOf(\"-Xjsr305=strict\")")
|
||||
assertThat(kotlinOptions.getAttributes()).hasSize(2);
|
||||
assertThat(kotlinOptions.getAttributes()).containsEntry("freeCompilerArgs", "listOf(\"-Xjsr305=strict\")")
|
||||
.containsEntry("jvmTarget", "\"1.8\"");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user