sbt scripted pluginは、sbt plugin自体をテストするためなどために、標準でsbtに添付されてるsbtとおなじproject内で作られている plugin で、*1 内部的には新たにprocess自体を作成して実行されてます。*2
それで結構前に↓
sbtのscripted-pluginでOutOfMemoryErrorになるんだけれど、scriptedのテスト時のJVMのoptionって、もとlancherを起動させたものと違うのかな・・・?それともなにか違う原因だろうか
2012-03-28 11:06:18 via web
結論としては、sbt0.11.2などのversionでは予想通りそもそも渡していないというか、指定方法が存在しなかったらしい。で、
https://github.com/sbt/sbt/pull/339
https://github.com/sbt/sbt/pull/340
sbt0.12だと解決されてた。しかし、sbt0.11系はどうすればいいんだろう・・・
そして、sbt0.12系だとしても、現状(sbt0.12.0-Beta2)のデフォルトではこんな感じで空になってる↓
https://github.com/sbt/sbt/blob/v0.12.0-Beta2/scripted/plugin/ScriptedPlugin.scala#L60
空だと、超簡単にメモリ足りなくなって落ちるので、毎回設定すればいいんだろうけど、メモリ関連のものはだいたい元の引数引き継げばいいだろうから、こんな感じにしてみた。
JVM自体の知識があれで、あまり自信がない・・・(´・ω・`)これじゃまずいとか、ほかにもっと引き継いだほうがいい引数ってあるだろうか。oracleのJVMの場合は、このあたり
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
の公式のdocumentを読めばいいのかな。そもそもJVMの種類とかversionによって、ここで指定できる引数の種類って違った気がするけれど、それも把握できてないし
追記:
giter8も同じ問題があるので、上記のオプションをデフォルトに設定したsbt0.12用のgiter8-pluginを作ってみました
https://github.com/xuwei-k/giter8/compare/1209d362bb3756503cc79d523db623f6f89b3d60...544d4d1852d50b8758a4dd63c557c3826a8d7aa9#L3R51
https://github.com/xuwei-k/giter8/tree/sbt0.12