Fix version references in Gradle KTS build

Closes gh-901
This commit is contained in:
Stephane Nicoll 2019-05-17 18:45:40 +02:00
parent c7c16872c4
commit 372e823d21
5 changed files with 34 additions and 35 deletions

View File

@ -21,6 +21,6 @@ dependencies {
dependencyManagement {
imports {
mavenBom("org.acme:foo-bom:${fooVersion}")
mavenBom("org.acme:foo-bom:${property("fooVersion")}")
}
}

View File

@ -40,7 +40,6 @@ import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.Configurati
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomization;
import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.generator.version.VersionReference;
/**
* {@link GradleBuild} writer abstraction.
@ -188,27 +187,7 @@ public abstract class GradleBuildWriter {
writer.println("}");
}
private String bomAsString(BillOfMaterials bom) {
String version = determineVersion(bom.getVersion());
return bomAsString(bom, version);
}
protected abstract String bomAsString(BillOfMaterials bom, String version);
protected final String determineVersion(VersionReference versionReference) {
if (versionReference != null) {
if (versionReference.isProperty()) {
VersionProperty property = versionReference.getProperty();
return "${" + (property.isInternal() ? property.toCamelCaseFormat()
: externalVersionPropertyAsString(property.toStandardFormat()))
+ "}";
}
return versionReference.getValue();
}
return null;
}
protected abstract String externalVersionPropertyAsString(String standardFormat);
protected abstract String bomAsString(BillOfMaterials bom);
protected abstract void writeTasksWithTypeCustomizations(IndentingWriter writer,
GradleBuild build);

View File

@ -24,6 +24,7 @@ import io.spring.initializr.generator.buildsystem.BillOfMaterials;
import io.spring.initializr.generator.buildsystem.Dependency;
import io.spring.initializr.generator.buildsystem.MavenRepository;
import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.generator.version.VersionReference;
/**
@ -138,15 +139,24 @@ public class GroovyDslGradleBuildWriter extends GradleBuildWriter {
}
@Override
protected String bomAsString(BillOfMaterials bom, String version) {
protected String bomAsString(BillOfMaterials bom) {
String quoteStyle = determineQuoteStyle(bom.getVersion());
return "mavenBom " + quoteStyle + bom.getGroupId() + ":" + bom.getArtifactId()
+ ":" + version + quoteStyle;
+ ":" + determineVersion(bom.getVersion()) + quoteStyle;
}
@Override
protected String externalVersionPropertyAsString(String standardFormat) {
return "property('" + standardFormat + "')";
private String determineVersion(VersionReference versionReference) {
if (versionReference != null) {
if (versionReference.isProperty()) {
VersionProperty property = versionReference.getProperty();
return "${"
+ (property.isInternal() ? property.toCamelCaseFormat()
: ("property('" + property.toStandardFormat() + "')"))
+ "}";
}
return versionReference.getValue();
}
return null;
}
@Override

View File

@ -27,6 +27,8 @@ import io.spring.initializr.generator.buildsystem.MavenRepository;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.ConfigurationCustomization;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomization;
import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.generator.version.VersionReference;
/**
* A {@link GradleBuild} writer for {@code build.gradle.kts}.
@ -151,14 +153,22 @@ public class KotlinDslGradleBuildWriter extends GradleBuildWriter {
}
@Override
protected String bomAsString(BillOfMaterials bom, String version) {
protected String bomAsString(BillOfMaterials bom) {
return "mavenBom(\"" + bom.getGroupId() + ":" + bom.getArtifactId() + ":"
+ version + "\")";
+ determineVersion(bom.getVersion()) + "\")";
}
@Override
protected String externalVersionPropertyAsString(String standardFormat) {
return "property(\"" + standardFormat + "\")";
private String determineVersion(VersionReference versionReference) {
if (versionReference != null) {
if (versionReference.isProperty()) {
VersionProperty property = versionReference.getProperty();
return "${property(\"" + (property.isInternal()
? property.toCamelCaseFormat() : property.toStandardFormat())
+ "\")}";
}
return versionReference.getValue();
}
return null;
}
@Override

View File

@ -251,7 +251,7 @@ class KotlinDslGradleBuildWriterTests {
DependencyScope.COMPILE);
List<String> lines = generateBuild(build);
assertThat(lines).containsSequence("dependencies {",
" implementation(\"org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}\")",
" implementation(\"org.jetbrains.kotlin:kotlin-stdlib-jdk8:${property(\"kotlinVersion\")}\")",
"}");
}
@ -425,7 +425,7 @@ class KotlinDslGradleBuildWriterTests {
List<String> lines = generateBuild(build);
assertThat(lines).containsSequence("dependencyManagement {", " imports {",
" mavenBom(\"com.example:my-project-dependencies:1.0.0.RELEASE\")",
" mavenBom(\"com.example:root-dependencies:${rootVersion}\")",
" mavenBom(\"com.example:root-dependencies:${property(\"rootVersion\")}\")",
" }", "}");
}