プラグイン作って覚えたことを淡々と記録するよ(GeneralCommandLine編)
まあ,いわゆるひとつの外部プロセスの起動方法ですな。
これも,今さらネタ。DerbyプラグインがIDEAと同一VMで動くためPerm領域を圧迫する問題があったんで,外部プロセス化してみ...るくらいだったら,External ToolsにDerbyの起動シェル登録するわ!!以上,おしまい。:-)
っていう話もあるけど,それじゃ身も蓋もないんで,一応外部プロセスの起動方法だけでもメモっとく。見ての通り,すげー簡単。
private void start() throws Exception { GeneralCommandLine cmd = new GeneralCommandLine(); cmd.setExePath("c:/javadb/bin/startNetworkServer.bat"); Process process = cmd.createProcess(); LOGGER.info("derby start"); }
GeneralCommandLine.createProcess()で得たProcessの出力情報をConsoleViewに流したりもできるっぽいけど,DerbyプラグインはApplicationComponentってこともあり面倒臭いからやらんかった。
#ConsoleViewを取得するには,Projectインスタンスが要るのだ。
#さらに加えとくと,ConsoleViewはTextConsoleBuilderから,TextConsoleBuilderはTextConsoleBuilderFactoryから取得する。
ちなみに,Derbyプラグインについてだけど,もともとが無設定でポチっと使える俺様プラグインだったワケなんで,わざわざ面倒なことをしてまでGeneralCommandLine化するつもりはないよ。
ただ,GeneralCommandLine化すると対象がDerbyである必要もなくなるワケで,もっかしたら「ON/OFFできるボタンをツールバーに置くだけプラグイン」として生まれ変わるかも知れない。:-P