sbt scripted plugin で OutOfMemoryError にならないように、必要そうな元のJVMの引数を引継ぐ

sbt scripted pluginは、sbt plugin自体をテストするためなどために、標準でsbtに添付されてるsbtとおなじproject内で作られている plugin で、*1 内部的には新たにprocess自体を作成して実行されてます。*2
それで結構前に↓

結論としては、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自体の知識があれで、あまり自信がない・・・(´・ω・`)これじゃまずいとか、ほかにもっと引き継いだほうがいい引数ってあるだろうか。oracleJVMの場合は、このあたり

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

*1:あと、sbt自体のtestにも使われてる

*2:classpathとかを色々引き継いじゃうとまずいっていう理由だとおもう