diff --git a/spring-cloud-cli/pom.xml b/spring-cloud-cli/pom.xml
index 3be39f0..7d11532 100644
--- a/spring-cloud-cli/pom.xml
+++ b/spring-cloud-cli/pom.xml
@@ -15,6 +15,15 @@
2.2.4.BUILD-SNAPSHOT
+
+
+
+ src/main/resources
+ true
+
+
+
+
org.springframework.cloud.launcher
diff --git a/spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/SpringCloudBomAstTransformation.java b/spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/SpringCloudBomAstTransformation.java
index 2186020..0cb3c91 100644
--- a/spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/SpringCloudBomAstTransformation.java
+++ b/spring-cloud-cli/src/main/java/org/springframework/cloud/cli/compiler/SpringCloudBomAstTransformation.java
@@ -16,10 +16,18 @@
package org.springframework.cloud.cli.compiler;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+
import org.codehaus.groovy.control.CompilePhase;
import org.codehaus.groovy.transform.GroovyASTTransformation;
import org.springframework.boot.cli.compiler.DependencyManagementBomTransformation;
import org.springframework.boot.cli.compiler.GenericBomAstTransformation;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.util.ReflectionUtils;
+import org.springframework.util.StreamUtils;
+import org.springframework.util.StringUtils;
/**
* @author Dave Syer
@@ -28,11 +36,9 @@ import org.springframework.boot.cli.compiler.GenericBomAstTransformation;
@GroovyASTTransformation(phase = CompilePhase.CONVERSION)
public class SpringCloudBomAstTransformation extends GenericBomAstTransformation {
- private static final String SPRING_CLOUD_VERSION = "Hoxton.SR7";
-
@Override
protected String getBomModule() {
- return "org.springframework.cloud:spring-cloud-starter-parent:" + SPRING_CLOUD_VERSION;
+ return "org.springframework.cloud:spring-cloud-starter-parent:" + getBomVersion();
}
@Override
@@ -40,4 +46,19 @@ public class SpringCloudBomAstTransformation extends GenericBomAstTransformation
return DependencyManagementBomTransformation.ORDER - 50;
}
+ String getBomVersion() {
+ try (InputStream in = new ClassPathResource("META-INF/springcloudbom-version.txt").getInputStream()) {
+ String version = StreamUtils.copyToString(in, StandardCharsets.UTF_8);
+ if (StringUtils.hasText(version)) {
+ version = version.trim();
+ }
+ return version;
+ }
+ catch (IOException e) {
+ ReflectionUtils.rethrowRuntimeException(e);
+ }
+ // not reachable since exception rethrown at runtime
+ return null;
+ }
+
}
diff --git a/spring-cloud-cli/src/main/resources/META-INF/springcloudbom-version.txt b/spring-cloud-cli/src/main/resources/META-INF/springcloudbom-version.txt
new file mode 100644
index 0000000..dcbc422
--- /dev/null
+++ b/spring-cloud-cli/src/main/resources/META-INF/springcloudbom-version.txt
@@ -0,0 +1 @@
+@spring-cloud.version@
diff --git a/spring-cloud-cli/src/test/java/org/springframework/cloud/cli/compiler/SpringCloudBomAstTransformationTests.java b/spring-cloud-cli/src/test/java/org/springframework/cloud/cli/compiler/SpringCloudBomAstTransformationTests.java
new file mode 100644
index 0000000..e979809
--- /dev/null
+++ b/spring-cloud-cli/src/test/java/org/springframework/cloud/cli/compiler/SpringCloudBomAstTransformationTests.java
@@ -0,0 +1,16 @@
+package org.springframework.cloud.cli.compiler;
+
+import org.junit.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class SpringCloudBomAstTransformationTests {
+
+ @Test
+ public void defaultVersionReadFromFile() {
+ String version = new SpringCloudBomAstTransformation().getBomVersion();
+ // starts with one or more word chars then a .
+ // TODO: change to \\d (digits) when merged to master
+ assertThat(version).isNotBlank().doesNotContainAnyWhitespaces().containsPattern("^\\w+\\..*");
+ }
+}
diff --git a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerApplication.java b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerApplication.java
index 2c776f1..e8f77df 100644
--- a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerApplication.java
+++ b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerApplication.java
@@ -113,7 +113,11 @@ public class DeployerApplication {
String getDefaultVersion() {
try (InputStream in = new ClassPathResource("META-INF/cli-version.txt").getInputStream()) {
- return StreamUtils.copyToString(in, StandardCharsets.UTF_8);
+ String version = StreamUtils.copyToString(in, StandardCharsets.UTF_8);
+ if (StringUtils.hasText(version)) {
+ version = version.trim();
+ }
+ return version;
}
catch (IOException e) {
ReflectionUtils.rethrowRuntimeException(e);
diff --git a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/test/java/org/springframework/cloud/launcher/deployer/DeployerApplicationTests.java b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/test/java/org/springframework/cloud/launcher/deployer/DeployerApplicationTests.java
index f3a350e..0b20862 100644
--- a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/test/java/org/springframework/cloud/launcher/deployer/DeployerApplicationTests.java
+++ b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/test/java/org/springframework/cloud/launcher/deployer/DeployerApplicationTests.java
@@ -64,6 +64,6 @@ public class DeployerApplicationTests {
public void defaultVersionReadFromFile() {
String defaultVersion = new DeployerApplication("--launcher.deploy=foo,bar").getDefaultVersion();
// starts with one or more digits then a .
- assertThat(defaultVersion).isNotBlank().containsPattern("^\\d+\\..*");
+ assertThat(defaultVersion).isNotBlank().doesNotContainAnyWhitespaces().containsPattern("^\\d+\\..*");
}
}