mirror of
https://gitee.com/dcren/initializr.git
synced 2025-07-15 14:04:30 +08:00
Fix references to built-in configurations with Gradle Kotlin DSL
Closes gh-917
This commit is contained in:
parent
db2c867f71
commit
d38463c4e7
@ -10,7 +10,7 @@ java.sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
|
||||
configurations {
|
||||
compileOnly {
|
||||
extendsFrom(annotationProcessor)
|
||||
extendsFrom(configurations.annotationProcessor.get())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -86,7 +86,7 @@ public abstract class GradleBuildWriter {
|
||||
protected abstract void writeConfigurations(IndentingWriter writer, GradleBuild build);
|
||||
|
||||
protected abstract void writeConfiguration(IndentingWriter writer, String configurationName,
|
||||
ConfigurationCustomization configurationCustomization);
|
||||
ConfigurationCustomization configurationCustomization, List<String> customConfigurations);
|
||||
|
||||
protected final void writeRepositories(IndentingWriter writer, GradleBuild build) {
|
||||
writeNestedCollection(writer, "repositories", build.repositories().items().collect(Collectors.toList()),
|
||||
|
@ -89,7 +89,7 @@ public class GroovyDslGradleBuildWriter extends GradleBuildWriter {
|
||||
|
||||
@Override
|
||||
protected void writeConfiguration(IndentingWriter writer, String configurationName,
|
||||
GradleBuild.ConfigurationCustomization configurationCustomization) {
|
||||
GradleBuild.ConfigurationCustomization configurationCustomization, List<String> customConfigurations) {
|
||||
writer.println(configurationName + " {");
|
||||
writer.indented(() -> writer.println(
|
||||
String.format("extendsFrom %s", String.join(", ", configurationCustomization.getExtendsFrom()))));
|
||||
@ -125,7 +125,7 @@ public class GroovyDslGradleBuildWriter extends GradleBuildWriter {
|
||||
writer.indented(() -> {
|
||||
configurations.forEach(writer::println);
|
||||
configurationCustomizations
|
||||
.forEach((name, customization) -> writeConfiguration(writer, name, customization));
|
||||
.forEach((name, customization) -> writeConfiguration(writer, name, customization, configurations));
|
||||
});
|
||||
writer.println("}");
|
||||
writer.println("");
|
||||
|
@ -16,8 +16,10 @@
|
||||
|
||||
package io.spring.initializr.generator.buildsystem.gradle;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -104,18 +106,27 @@ public class KotlinDslGradleBuildWriter extends GradleBuildWriter {
|
||||
|
||||
@Override
|
||||
protected void writeConfiguration(IndentingWriter writer, String configurationName,
|
||||
ConfigurationCustomization configurationCustomization) {
|
||||
ConfigurationCustomization configurationCustomization, List<String> customConfigurations) {
|
||||
if (configurationCustomization.getExtendsFrom().isEmpty()) {
|
||||
writer.println(configurationName);
|
||||
}
|
||||
else {
|
||||
writer.println(configurationName + " {");
|
||||
writer.indented(() -> writer.println(String.format("extendsFrom(%s)",
|
||||
configurationCustomization.getExtendsFrom().stream().collect(Collectors.joining(", ")))));
|
||||
configurationCustomization.getExtendsFrom().stream()
|
||||
.map((name) -> configurationReference(name, customConfigurations))
|
||||
.collect(Collectors.joining(", ")))));
|
||||
writer.println("}");
|
||||
}
|
||||
}
|
||||
|
||||
private String configurationReference(String configurationName, Collection<String> customConfigurations) {
|
||||
if (customConfigurations.contains(configurationName)) {
|
||||
return configurationName;
|
||||
}
|
||||
return "configurations." + configurationName + ".get()";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String repositoryAsString(MavenRepository repository) {
|
||||
if (MavenRepository.MAVEN_CENTRAL.equals(repository)) {
|
||||
@ -127,7 +138,8 @@ public class KotlinDslGradleBuildWriter extends GradleBuildWriter {
|
||||
@Override
|
||||
protected void writeConfigurations(IndentingWriter writer, GradleBuild build) {
|
||||
Map<String, ConfigurationCustomization> configurationCustomizations = build.getConfigurationCustomizations();
|
||||
for (String configuration : build.getConfigurations()) {
|
||||
List<String> configurations = build.getConfigurations();
|
||||
for (String configuration : configurations) {
|
||||
writer.println("val " + configuration + " by configurations.creating");
|
||||
}
|
||||
if (configurationCustomizations.isEmpty()) {
|
||||
@ -135,7 +147,7 @@ public class KotlinDslGradleBuildWriter extends GradleBuildWriter {
|
||||
}
|
||||
writer.println("configurations {");
|
||||
writer.indented(() -> configurationCustomizations
|
||||
.forEach((name, customization) -> writeConfiguration(writer, name, customization)));
|
||||
.forEach((name, customization) -> writeConfiguration(writer, name, customization, configurations)));
|
||||
writer.println("}");
|
||||
writer.println("");
|
||||
}
|
||||
|
@ -277,21 +277,24 @@ class KotlinDslGradleBuildWriterTests {
|
||||
@Test
|
||||
void gradleBuildWithConfigurationCustomization() throws Exception {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.customizeConfiguration("runtimeClasspath", (configuration) -> configuration.extendsFrom("custom1"));
|
||||
build.customizeConfiguration("runtimeClasspath", (configuration) -> configuration.extendsFrom("custom2"));
|
||||
build.addConfiguration("custom");
|
||||
build.customizeConfiguration("runtimeClasspath", (configuration) -> configuration.extendsFrom("custom"));
|
||||
build.customizeConfiguration("runtimeClasspath", (configuration) -> configuration.extendsFrom("builtIn"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("configurations {", " runtimeClasspath {",
|
||||
" extendsFrom(custom1, custom2)", " }", "}");
|
||||
assertThat(lines).containsSequence("val custom by configurations.creating", "configurations {",
|
||||
" runtimeClasspath {", " extendsFrom(custom, configurations.builtIn.get())", " }", "}");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithConfigurationCustomizations() throws Exception {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.customizeConfiguration("runtimeClasspath", (configuration) -> configuration.extendsFrom("custom1"));
|
||||
build.customizeConfiguration("testRuntimeClasspath", (configuration) -> configuration.extendsFrom("custom2"));
|
||||
build.addConfiguration("custom");
|
||||
build.customizeConfiguration("runtimeClasspath", (configuration) -> configuration.extendsFrom("custom"));
|
||||
build.customizeConfiguration("testRuntimeClasspath", (configuration) -> configuration.extendsFrom("builtIn"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("configurations {", " runtimeClasspath {", " extendsFrom(custom1)",
|
||||
" }", " testRuntimeClasspath {", " extendsFrom(custom2)", " }", "}");
|
||||
assertThat(lines).containsSequence("val custom by configurations.creating", "configurations {",
|
||||
" runtimeClasspath {", " extendsFrom(custom)", " }", " testRuntimeClasspath {",
|
||||
" extendsFrom(configurations.builtIn.get())", " }", "}");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
Reference in New Issue
Block a user