Gradle 守护进程不重用,尽管 java/gradle 版本相同



我正在 docker 容器上运行 gradle 5.6.2/Java 11 作为非特权任意用户(没有/etc/passwd 条目(并通过docker exec构建。如果我通过gradle --foreground启动守护程序然后运行gradle build,尽管所有环境变量和配置都相同,但守护进程始终被视为不兼容。Gradle 让我知道At least one daemon option is different但没有告诉我是什么选项导致了问题或提供任何有用的上下文。从--info输出中,我看不出任何显着差异:

Found daemon DaemonInfo{pid=2349, address=[faff1188-7330-4666-8735-46fd97109411 port:33491, addresses:[/127.0.0.1]], state=Idle, lastBusy=1571244832816, context=DefaultDaemonContext[uid=ba368fe6-ab22-4d82-8780-a1b58dd80baf,javaHome=/usr/lib/jvm/adoptopenjdk-11-
hotspot-amd64,daemonRegistryDir=/var/gradle/daemon,pid=2349,idleTimeout=10800000,priority=NORMAL,daemonOpts=-Xms64m,-Xmx64m,-Dfile.encoding=US-ASCII,-Duser.country=US,-Duser.language=en,-Duser.variant]} however its context does not match the desired criteria.
At least one daemon option is different.
Wanted: DefaultDaemonContext[uid=null,javaHome=/usr/lib/jvm/adoptopenjdk-11-hotspot-amd64,daemonRegistryDir=/var/gradle/daemon,pid=2416,idleTimeout=null,priority=NORMAL,daemonOpts=--add-opens,java.base/java.util=ALL-UNNAMED,--add-opens,java.base/java.lang=ALL-U
NNAMED,--add-opens,java.base/java.lang.invoke=ALL-UNNAMED,--add-opens,java.prefs/java.util.prefs=ALL-UNNAMED,-XX:MaxMetaspaceSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xms256m,-Xmx512m,-Dfile.encoding=US-ASCII,-Duser.country=US,-Duser.language=en,-Duser.variant
]
Actual: DefaultDaemonContext[uid=ba368fe6-ab22-4d82-8780-a1b58dd80baf,javaHome=/usr/lib/jvm/adoptopenjdk-11-hotspot-amd64,daemonRegistryDir=/var/gradle/daemon,pid=2349,idleTimeout=10800000,priority=NORMAL,daemonOpts=-Xms64m,-Xmx64m,-Dfile.encoding=US-ASCII,-Dus
er.country=US,-Duser.language=en,-Duser.variant]
Looking for a different daemon...

如何确保我的前台守护进程被使用,而不是在每次构建时启动一个新的守护进程并浪费过多的时间?

附加--add-opens选项和xms/xmx值都存在差异。查看"通缉"和"实际"行中的daemonOpts

当您使用--foreground选项启动守护程序时,它不会评估您的项目。因此,您在此处指定的任何选项(例如通过org.gradle.jvmargs(都不会被使用。

但是,您可以在启动守护程序之前在GRADLE_OPTS环境变量中设置项目中使用的相同值。这应该使其兼容。但是,您为什么首先使用该选项?

最新更新