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)