IntelliJ IDEA13でJavaEEプロジェクトを作る
「New Projectウィザード」で「Java Enterprise」を選んで、いろんなテクノロジを選択するんだけど「Application Server」にGlassfish4を選んでいると「Use library from 'GlassFish 4.0.0' installation」って項目が追加されて、大抵のライブラリをGlassfishから参照するようになる。
これはこれで便利なんだけど、なんでか一部のテクノロジ(たとえばJPA)はGlassfish内にある javax.persistence.jar
を参照せずにわざわざダウンロードしてくる。それに小刻みに参照ライブラリを区切るので、あぶれるものが出てきたり(javax.interceptor
パッケージが見当たらない、とか)と、手放しで喜ぶほどデキがよくない。(´・ω・`)
なにより、ローカルにあるGlassfish上のライブラリを参照するので、プロジェクトを共有するのに向かない。
だったら、New Projectでヘンに凝ったことせず、せいぜい「Web Application」か「JSF」それも「Set up library later」にして、プロジェクト作っておいて、
あとから「Project Structure」でMavenライブラリ(From Maven...)から「javax:javaee-api:7.0
」をダウンロードしたほうが数倍マシ。Scopeは「Provided」でね(Web Profileだと「javax:javaee-web-api:7.0
」と指定する)。
。
デプロイ先がGlassfish4だと、ほとんど揃っているので「javaee-api-7.0.jar
」はProvidedで済むんだけど、他のAPサーバだと必要に応じてJSFの実装とかWARファイルにバンドルしないとダメなんじゃないかな?
というか、このjavaee-api-7.0.jar
(または javaee-web-api-7.0.jar
)、NetBeansには入っているのにGlassfishやJavaEE 7 SDKに入ってないってのは、どうゆう了見だ!と思わなくもない。
#単に自分の探し方が下手なだけ?
ps.
このヘンはNetBeansのほうがマイルドなんだろか...。