org.gradle.launcher.daemon.configuration.DaemonParameters Maven / Gradle / Ivy
/*
* Copyright 2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.gradle.launcher.daemon.configuration;
import com.google.common.collect.ImmutableList;
import org.gradle.api.JavaVersion;
import org.gradle.api.Nullable;
import org.gradle.api.internal.file.IdentityFileResolver;
import org.gradle.initialization.BuildLayoutParameters;
import org.gradle.internal.jvm.JavaInfo;
import org.gradle.internal.jvm.Jvm;
import org.gradle.util.GUtil;
import java.io.File;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DaemonParameters {
static final int DEFAULT_IDLE_TIMEOUT = 3 * 60 * 60 * 1000;
public static final int DEFAULT_PERIODIC_CHECK_INTERVAL_MILLIS = 10 * 1000;
public static final List DEFAULT_JVM_ARGS = ImmutableList.of("-Xmx1024m", "-XX:MaxPermSize=256m", "-XX:+HeapDumpOnOutOfMemoryError");
public static final List DEFAULT_JVM_9_ARGS = ImmutableList.of("-Xmx1024m", "-XX:+HeapDumpOnOutOfMemoryError");
public static final String INTERACTIVE_TOGGLE = "org.gradle.interactive";
private final File gradleUserHomeDir;
private File baseDir;
private int idleTimeout = DEFAULT_IDLE_TIMEOUT;
private int periodicCheckInterval = DEFAULT_PERIODIC_CHECK_INTERVAL_MILLIS;
private final DaemonJvmOptions jvmOptions = new DaemonJvmOptions(new IdentityFileResolver());
private Map envVariables;
private boolean enabled = true;
private boolean hasJvmArgs;
private boolean foreground;
private boolean stop;
private boolean status;
private boolean interactive = System.console() != null || Boolean.getBoolean(INTERACTIVE_TOGGLE);
private JavaInfo jvm = Jvm.current();
public DaemonParameters(BuildLayoutParameters layout) {
this(layout, Collections.emptyMap());
}
public DaemonParameters(BuildLayoutParameters layout, Map extraSystemProperties) {
jvmOptions.systemProperties(extraSystemProperties);
baseDir = new File(layout.getGradleUserHomeDir(), "daemon");
gradleUserHomeDir = layout.getGradleUserHomeDir();
envVariables = new HashMap(System.getenv());
}
public boolean isInteractive() {
return interactive;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public File getBaseDir() {
return baseDir;
}
public File getGradleUserHomeDir() {
return gradleUserHomeDir;
}
public int getIdleTimeout() {
return idleTimeout;
}
public void setIdleTimeout(int idleTimeout) {
this.idleTimeout = idleTimeout;
}
public int getPeriodicCheckInterval() {
return periodicCheckInterval;
}
public void setPeriodicCheckInterval(int periodicCheckInterval) {
this.periodicCheckInterval = periodicCheckInterval;
}
public List getEffectiveJvmArgs() {
return jvmOptions.getAllImmutableJvmArgs();
}
public List getEffectiveSingleUseJvmArgs() {
return jvmOptions.getAllSingleUseImmutableJvmArgs();
}
public JavaInfo getEffectiveJvm() {
return jvm;
}
@Nullable
public DaemonParameters setJvm(JavaInfo jvm) {
this.jvm = jvm == null ? Jvm.current() : jvm;
return this;
}
public void applyDefaultsFor(JavaVersion javaVersion) {
if (hasJvmArgs) {
return;
}
if (javaVersion.compareTo(JavaVersion.VERSION_1_9) >= 0) {
jvmOptions.jvmArgs(DEFAULT_JVM_9_ARGS);
} else {
jvmOptions.jvmArgs(DEFAULT_JVM_ARGS);
}
}
public Map getSystemProperties() {
Map systemProperties = new HashMap();
GUtil.addToMap(systemProperties, jvmOptions.getMutableSystemProperties());
return systemProperties;
}
public Map getEffectiveSystemProperties() {
Map systemProperties = new HashMap();
GUtil.addToMap(systemProperties, jvmOptions.getMutableSystemProperties());
GUtil.addToMap(systemProperties, jvmOptions.getImmutableDaemonProperties());
GUtil.addToMap(systemProperties, System.getProperties());
return systemProperties;
}
public void setJvmArgs(Iterable jvmArgs) {
hasJvmArgs = true;
jvmOptions.setAllJvmArgs(jvmArgs);
}
public void setEnvironmentVariables(Map envVariables) {
this.envVariables = envVariables == null ? new HashMap(System.getenv()) : envVariables;
}
public void setDebug(boolean debug) {
jvmOptions.setDebug(debug);
}
public DaemonParameters setBaseDir(File baseDir) {
this.baseDir = baseDir;
return this;
}
public boolean getDebug() {
return jvmOptions.getDebug();
}
public boolean isForeground() {
return foreground;
}
public void setForeground(boolean foreground) {
this.foreground = foreground;
}
public boolean isStop() {
return stop;
}
public void setStop(boolean stop) {
this.stop = stop;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public Map getEnvironmentVariables() {
return envVariables;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy