IntelliJ CE用Winstoneプラグイン公開しました

http://plugins.intellij.net/plugin/?idea&id=4562


Winstoneプラグインの売りは「APサーバでありながらIDEAでカバレッジが取れる」なんだけど,CEじゃカバレッジ機能ないので,それが邪魔して動かなかったわけ。だから,それを外してサクっとCE対応できたよっ。
...って唯一の売りを手放して,何がうれしいんだかさっぱりわからんものを作ってしまった。


もともとWinstoneはJarファイル1個で動く超軽量コンテナなので,わざわざそんな事しなくても,Java Applicationとして実行構成組めばEclipseでも(多分NetBeansでも)何ででも起動できるんだけどね。それに,IntelliJ CEは辛うじてMavenサポートしているので,Mavenでwebappプロジェクト作ってjetty使うのが王道のような気がする...。


ぶつぶつ愚痴っても仕方ない。誰が使うかわからんけど,一応使い方書いておくよ。:-D



まず何かテキトーなJavaプロジェクト作って下さい。そして,どこからか servlet-api.jar を手に入れて,ライブラリに登録だ(Project Structureのアイコンが分かんない人は,File -> Project Structure でおk)。IDEA9からMavenよろしくライブラリのスコープが設定できるので,servlet-api.jarはProvidedにしておこう。


CEはWebアプリサポートしてないんで,自分で web/WEB-INF ディレクトリや web.xml を作ってね。という調子で,こんなやる気のないサーブレットを書いてみた。


次が仕込みのポイント。IDEA9からartifactsちゅう成果物の構成を自前で指定できるようになったので,それを使って「なんちゃってWARディレクトリ」を生成するようしとく。
Project Structureを開いて,Artifactsを選択。[+]ボタン押して,新しいartifactsを作成。下図のようなartifactsを構成するよ("Build on make"はちゃんとチェックしといてね)。


一応,手順を残しておくと

  1. Create Direcotryアイコンを使って,"WEB-INF", "WEB-INF/lib" ディレクトリを作成
  2. "WEB-INF/lib"ディレクトリを選択して,Create Archiveアイコンを押して,jarファイルを置く
  3. jarファイルを選択して,[+] -> Module Output で,jarファイルの中身を指定する
  4. [+] -> File で "WEB-INF"ディレクトリに,web.xmlを配置する

...てな感じ。webディレクトリをartifactsに直接指定しないのは,webディレクトリからコピーしたいんじゃなくて,webディレクトリの中身をコピーしたかったから。それと,コピーしたディレクトリの中身を弄れないから。


どうでもいいけど,このArchiveすげー便利や。ある程度の作業だったら,もうAntも要らないじゃないか。:-)


ここまでで,仕込みは完了。あとはWinstoneを実行するんで,Run Configurationを作る。

 → 


WinstoneプラグインWinstone本体も入っているので,最低限設定しておくのは,Webアプリケーション・ディレクトリだけ。それは,さっき作ったしたArtifactsを指定しとこう。この設定する前に,1回ビルドしておくとArtifactsが生成されてるんで,ディレクトリ指定するの楽になるよ。


あとは,一旦Run Configurationを閉じて(OKボタン押してね),実行するだけ。

  ↓


で,こんな感じになる。とりあえずデバッガも動くし,まあ無いよりマシ程度にはなるかもしれん(ホントか?)。


ps.
Winstoneにそれなりの設定をしといてやると,一応JSPも使えるよ。といっても,CE版のIDEAにはJSPどころかHTMLの編集機能すら無いけどね。
相変わらずやる気のないJSP(Artifactsに忘れず追加しといてね)。


だから何だという実行画面。:-)