1

Jenkins で Grails プラグインを使用したい。ただし、すべてのビルドは次のメッセージで失敗します。

[workspace] $ /usr/local/grails-2.1.1/bin/grails clean --non-interactive
Error occurred during initialization of VM
Incompatible minimum and maximum heap sizes specified
Build step 'Build With Grails' marked build as failure

コンソールからコマンドを実行すると、この Java エラーなしで実行されます。GRAILS_OPTS でメモリ使用量を設定しようとしましたが、それでも機能しません。私はちょっとここで立ち往生しています。

4

3 に答える 3

1

cd /opt/grails/bin

次の行を探します。

GRAILS_OPTS="-server -Xmx718M -Xms718M -XX:PermSize=256m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8"

...そして次のように変更します。

GRAILS_OPTS="-server -Xmx512m -Xms512m -XX:PermSize=256m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8"
于 2012-12-16T03:51:47.367 に答える
1

/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"
}

そして、サイズが存在しない場合にサイズを再度追加するロジックを追加しました(コマンドラインからも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"
于 2012-12-26T18:21:37.990 に答える
-1

どのヒープ サイズ オプションを使用していますか? これは、間違ったユニットを使用しているか、オフにしている可能性があります。これを行うと、同じエラーメッセージが表示されます。

$ JAVA_OPTS=-Xmx2048 grails run-app
Error occurred during initialization of VM
Incompatible minimum and maximum heap sizes specified    

使用-Xmx2048Mは期待どおりに機能します。

于 2012-10-17T15:08:51.393 に答える