2014-02-20 103 views
5

當我設置GRADLE_OPTSJAVA_OPTS時,當我爲我的項目運行./gradlew build時,這些設置爲GradleWrapperMain。但我也需要將它們設置爲GradleWorkerMain如何爲GradleWorkerMain設置JVM選項?

我該怎麼做?

這是當該Gradle作業在Bamboo中運行時的ps列表。我的JAVA_OPTS(如-Dcool.opt=1)從GradleWorkerMain中缺失。

53854 ? Sl 2:13 /home/apps/jdk7/bin/java -Dorg.gradle.daemon=false -Dcool.opt=1 -Xms1g -Xmx8g -XX:PermSize=256m -XX:MaxPermSize=768m -Djava.security.egd=file:/dev/./urandom -Dorg.gradle.appname=gradlew -classpath /path/to/gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain build 
54272 ? Sl 0:19 /home/apps/jdk1.7.0_45/bin/java -Dfile.encoding=ISO-8859-1 -cp /path/to/lots/of/jars.jar org.gradle.process.internal.launcher.GradleWorkerMain 
+0

爲什麼你需要這個?你想解決哪個更大的問題?你能舉一個具體的例子嗎? –

+0

在我的情況下,原因相當愚蠢:GradleWorkerMain進程有時會掛在我的構建服務器上。當我殺死它的時候,我想有一些想要的東西。我不能殺死所有的GradleWorkerMain進程,因爲這是一個共享的生成服務器。所以'-Dbamboo.buildKey = $ {bamboo.buildKey}'可以做到這一點。 – neu242

回答

5

沒有直接的方法來爲GradleWorkerMain進程設置JVM選項。該叉新工人實行JavaForkOptions,所以你可以嘗試大多數(但不是全部)任務類型:

沒有實現 JavaForkOptions
tasks.withType(JavaForkOptions) { 
    systemProperty "cool.opt", "1" 
    jvmArgs "someArg" 
} 

任務類型通常允許設置在一些其他的方式叉選項。例如:

tasks.withType(JavaCompile) { 
    options.fork = true // otherwise won't fork 
    options.forkOptions.jvmArgs = ["-Dcool.opt=1"] 
} 
+0

感謝您的快速回答! – neu242

0

我見過的一個類似的問題是用gradle scala插件。我需要添加下面的配置來控制Xmx。

tasks.withType(ScalaCompile) { 
    configure(scalaCompileOptions.forkOptions) { 
     memoryMaximumSize = '1g' 
    } 
}