mirror of
https://gitee.com/dcren/initializr.git
synced 2026-06-29 22:46:00 +08:00
Fix version references in Gradle KTS build
Closes gh-901
This commit is contained in:
@@ -21,6 +21,6 @@ dependencies {
|
|||||||
|
|
||||||
dependencyManagement {
|
dependencyManagement {
|
||||||
imports {
|
imports {
|
||||||
mavenBom("org.acme:foo-bom:${fooVersion}")
|
mavenBom("org.acme:foo-bom:${property("fooVersion")}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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\")}\")",
|
||||||
" }", "}");
|
" }", "}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user