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 { dependencyManagement {
imports { 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.buildsystem.gradle.GradleBuild.TaskCustomization;
import io.spring.initializr.generator.io.IndentingWriter; import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.version.VersionProperty; import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.generator.version.VersionReference;
/** /**
* {@link GradleBuild} writer abstraction. * {@link GradleBuild} writer abstraction.
@@ -188,27 +187,7 @@ public abstract class GradleBuildWriter {
writer.println("}"); writer.println("}");
} }
private String bomAsString(BillOfMaterials bom) { protected abstract 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 void writeTasksWithTypeCustomizations(IndentingWriter writer, protected abstract void writeTasksWithTypeCustomizations(IndentingWriter writer,
GradleBuild build); 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.Dependency;
import io.spring.initializr.generator.buildsystem.MavenRepository; import io.spring.initializr.generator.buildsystem.MavenRepository;
import io.spring.initializr.generator.io.IndentingWriter; import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.generator.version.VersionReference; import io.spring.initializr.generator.version.VersionReference;
/** /**
@@ -138,15 +139,24 @@ public class GroovyDslGradleBuildWriter extends GradleBuildWriter {
} }
@Override @Override
protected String bomAsString(BillOfMaterials bom, String version) { protected String bomAsString(BillOfMaterials bom) {
String quoteStyle = determineQuoteStyle(bom.getVersion()); String quoteStyle = determineQuoteStyle(bom.getVersion());
return "mavenBom " + quoteStyle + bom.getGroupId() + ":" + bom.getArtifactId() return "mavenBom " + quoteStyle + bom.getGroupId() + ":" + bom.getArtifactId()
+ ":" + version + quoteStyle; + ":" + determineVersion(bom.getVersion()) + quoteStyle;
} }
@Override private String determineVersion(VersionReference versionReference) {
protected String externalVersionPropertyAsString(String standardFormat) { if (versionReference != null) {
return "property('" + standardFormat + "')"; if (versionReference.isProperty()) {
VersionProperty property = versionReference.getProperty();
return "${"
+ (property.isInternal() ? property.toCamelCaseFormat()
: ("property('" + property.toStandardFormat() + "')"))
+ "}";
}
return versionReference.getValue();
}
return null;
} }
@Override @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.ConfigurationCustomization;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomization; import io.spring.initializr.generator.buildsystem.gradle.GradleBuild.TaskCustomization;
import io.spring.initializr.generator.io.IndentingWriter; 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}. * A {@link GradleBuild} writer for {@code build.gradle.kts}.
@@ -151,14 +153,22 @@ public class KotlinDslGradleBuildWriter extends GradleBuildWriter {
} }
@Override @Override
protected String bomAsString(BillOfMaterials bom, String version) { protected String bomAsString(BillOfMaterials bom) {
return "mavenBom(\"" + bom.getGroupId() + ":" + bom.getArtifactId() + ":" return "mavenBom(\"" + bom.getGroupId() + ":" + bom.getArtifactId() + ":"
+ version + "\")"; + determineVersion(bom.getVersion()) + "\")";
} }
@Override private String determineVersion(VersionReference versionReference) {
protected String externalVersionPropertyAsString(String standardFormat) { if (versionReference != null) {
return "property(\"" + standardFormat + "\")"; if (versionReference.isProperty()) {
VersionProperty property = versionReference.getProperty();
return "${property(\"" + (property.isInternal()
? property.toCamelCaseFormat() : property.toStandardFormat())
+ "\")}";
}
return versionReference.getValue();
}
return null;
} }
@Override @Override

View File

@@ -251,7 +251,7 @@ class KotlinDslGradleBuildWriterTests {
DependencyScope.COMPILE); DependencyScope.COMPILE);
List<String> lines = generateBuild(build); List<String> lines = generateBuild(build);
assertThat(lines).containsSequence("dependencies {", 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); List<String> lines = generateBuild(build);
assertThat(lines).containsSequence("dependencyManagement {", " imports {", assertThat(lines).containsSequence("dependencyManagement {", " imports {",
" mavenBom(\"com.example:my-project-dependencies:1.0.0.RELEASE\")", " mavenBom(\"com.example:my-project-dependencies:1.0.0.RELEASE\")",
" mavenBom(\"com.example:root-dependencies:${rootVersion}\")", " mavenBom(\"com.example:root-dependencies:${property(\"rootVersion\")}\")",
" }", "}"); " }", "}");
} }