如何为 GradleWorkerMain 设置 JVM 选项?
Posted
技术标签:
【中文标题】如何为 GradleWorkerMain 设置 JVM 选项?【英文标题】:How do I set JVM options for GradleWorkerMain? 【发布时间】:2014-02-20 11:42:11 【问题描述】:当我设置GRADLE_OPTS
或JAVA_OPTS
时,当我为我的项目运行./gradlew build
时,这些设置为GradleWrapperMain
。但我也需要将它们设置为GradleWorkerMain
。
我该怎么做?
这是在 Bamboo 中运行 Gradle 作业时的 ps
列表。 GradleWorkerMain
中缺少我的JAVA_OPTS
(例如-Dcool.opt=1
)。
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
【问题讨论】:
为什么需要这个?你想解决哪个更大的问题?能举个具体的例子吗? 在我的情况下,原因相当愚蠢:GradleWorkerMain 进程有时会挂在我的构建服务器上。当我杀死它时,我想有一些东西可以grep。我不能只杀死所有 GradleWorkerMain 进程,因为这是一个共享构建服务器。所以-Dbamboo.buildKey=$bamboo.buildKey
就可以了。
【参考方案1】:
没有直接的方法为GradleWorkerMain
进程设置JVM 选项。派生新工作人员的大多数(但不是全部)任务类型都实现了JavaForkOptions
,因此您可以尝试:
tasks.withType(JavaForkOptions)
systemProperty "cool.opt", "1"
jvmArgs "someArg"
不实现JavaForkOptions
的任务类型通常允许以其他方式设置分叉选项。例如:
tasks.withType(JavaCompile)
options.fork = true // otherwise won't fork
options.forkOptions.jvmArgs = ["-Dcool.opt=1"]
【讨论】:
感谢您的快速答复!【参考方案2】:我见过的一个类似问题是 gradle scala 插件。我需要在下面添加配置来控制 Xmx。
tasks.withType(ScalaCompile)
configure(scalaCompileOptions.forkOptions)
memoryMaximumSize = '1g'
【讨论】:
以上是关于如何为 GradleWorkerMain 设置 JVM 选项?的主要内容,如果未能解决你的问题,请参考以下文章
如何为Fibonacci算法设计并行代码,但没有openmp任务?