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+\\..*"); } }