diff --git a/spring-cloud-launcher/pom.xml b/spring-cloud-launcher/pom.xml index 5fafa3d..c39d5ae 100644 --- a/spring-cloud-launcher/pom.xml +++ b/spring-cloud-launcher/pom.xml @@ -31,7 +31,7 @@ 1.0.0.BUILD-SNAPSHOT - 1.0.0.BUILD-SNAPSHOT + 1.0.3.BUILD-SNAPSHOT diff --git a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java index e916897..9125074 100644 --- a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java +++ b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerProperties.java @@ -138,10 +138,15 @@ public class DeployerProperties { */ private String message; /** - * A map of"negative" properties that apply to all apps when this one is disabled. + * A map of "negative" properties that apply to all apps when this one is disabled. * E.g. when eureka is disabled you might want "eureka.client.enabled=false". */ private Map disabled = new LinkedHashMap<>(); + /** + * A list of java options to pass to the jvm command (e.g. java). + * E.g. -Dmy.prop=myval + */ + private List javaOptions = new ArrayList<>(); public String getCoordinates() { return this.coordinates; @@ -200,6 +205,14 @@ public class DeployerProperties { return disabled; } + public List getJavaOptions() { + return javaOptions; + } + + public void setJavaOptions(List javaOptions) { + this.javaOptions = javaOptions; + } + @Override public String toString() { final StringBuffer sb = new StringBuffer("Deployable{"); @@ -209,6 +222,7 @@ public class DeployerProperties { sb.append(", waitUntilStarted=").append(this.waitUntilStarted); sb.append(", order=").append(this.order); sb.append(", disabled=").append(this.disabled); + sb.append(", javaOptions=").append(this.javaOptions); sb.append(", message=").append(this.message); sb.append('}'); return sb.toString(); diff --git a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerThread.java b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerThread.java index 6c9f42b..36e6458 100644 --- a/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerThread.java +++ b/spring-cloud-launcher/spring-cloud-launcher-deployer/src/main/java/org/springframework/cloud/launcher/deployer/DeployerThread.java @@ -20,7 +20,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -54,6 +53,8 @@ import org.springframework.core.io.ResourceLoader; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; +import static org.springframework.util.StringUtils.collectionToCommaDelimitedString; + /** * @author Spencer Gibb */ @@ -271,14 +272,20 @@ public class DeployerThread extends Thread { AppDefinition definition = new AppDefinition(deployable.getName(), appDefProps); - Map environmentProperties = Collections - .singletonMap(AppDeployer.GROUP_PROPERTY_KEY, "launcher"); + Map deploymentProperties = new LinkedHashMap<>(); + deploymentProperties.put(AppDeployer.GROUP_PROPERTY_KEY, "launcher"); + + if (deployable.getJavaOptions() != null && !deployable.getJavaOptions().isEmpty()) { + deploymentProperties.put("JAVA_OPTS", collectionToCommaDelimitedString(deployable.getJavaOptions())); + } + AppDeploymentRequest request = new AppDeploymentRequest(definition, resource, - environmentProperties); + deploymentProperties); logger.debug("Deploying resource {} = {}", deployable.getName(), deployable.getCoordinates()); - logger.debug("Properties: {}", appDefProps); + logger.debug("AppDefinition Properties: {}", appDefProps); + logger.debug("Deployment Properties: {}", deploymentProperties); String id = deployer.deploy(request); AppStatus appStatus = getAppStatus(deployer, id); // TODO: stream stdout/stderr like docker-compose (with colors and prefix)