我不得不手动修改脚本/usr/share/grails/2.1.1/bin/startGrails
来解决这个问题,因为该参数是由 Jenkins 在 JAVA_OPTS 中传入并在 GRAILS_OPTS 中设置的。
首先,我从 GRAILS_OPTS 中删除了参数:
GRAILS_OPTS="-server -Xmx768M -Xms768M -XX:PermSize=256m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8"
离开
GRAILS_OPTS="-server -XX:PermSize=256m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8"
然后我添加了一个符合 POSIX 的contains
函数:
#POSIX compliant contains implementation
#Usage string substring
contains() {
test "${1#*$2}" != "$1"
}
然后我添加了逻辑来重新添加大小,如果它们不存在(b / c我也使用命令行中的grails)这些echo
语句当然仅用于调试。请注意,这是对已交付文件的更改,如果您升级 Grails,可能必须重新制作。
JAVA_OPTS="$GRAILS_OPTS $JAVA_OPTS $AGENT"
echo "JAVA_OPTS: $JAVA_OPTS"
if ! contains "$JAVA_OPTS" -Xms && ! contains "$JAVA_OPTS" -Xmx
then
echo "Setting -Xms"
JAVA_OPTS="-Xms768M $JAVA_OPTS"
fi
if ! contains "$JAVA_OPTS" -Xmx
then
echo "Setting -Xmx"
JAVA_OPTS="-Xmx768M $JAVA_OPTS"
fi
echo "JAVA_OPTS: $JAVA_OPTS"