20日目 artifactの設定(ついでにProject Structure )

Settingsの話は3回もやりましたが,Project Structureの話をしてませんでしたね。正直,面倒なので,昔に書いたエントリーやIntelliJ本体のヘルプを参照してください(だんだんやる気がなくなってる。
初めてIntelliJに触れる人へ − プロジェクトの設定とかテスト実行の話


IntelliJのバージョンがあがるたびに設定画面もびみょうに変わってますが,まあ何とか読み替えられると思います。ちょっと補足すると,ライブラリの設定(File->Project Structure->Modules->Dependencies)にあるスコープ(Scope)は,Mavenを知らないと意味がわからないと思います。


設定可能な値と意味は以下の通りです。

  • Compile
    • 普通はこれです。コンパイルや実行時に参照されます。
  • Test
    • テストコードのコンパイルとテストの実行時に参照されます。
    • junit.jarとかがここに属します。
  • Runtime
    • 実行時にだけ参照されます。コンパイル時には参照されませんので,コード補完の対象になりません。
    • 強いて言えばJDBCドライバなどが,ここに属します。
  • Provided
    • 実行環境にあらかじめ用意されているライブラリを指定します。コンパイル時に参照されますが,実行時には参照されません(実行環境に相当品があるので)。
    • 具体的に言うと,J2EEAPIjavaee.jar)とかが,ここに属します。


NetBeansにも同様の考え方があるので,NetBeansからの移行組はすんなり理解できると思いますが,eclipseにはどうゆうわけか伝統的にこの考えが無いので,はじめは戸惑うかと思います。でも,これを知ってしまうとスコープが無い世界には戻れないと思いますヨ。:-)


あと,ライブラリはMaven Repositoryから直接ダウンロードできます。
IntelliJ IDEA 10のEAPが登場したよ

Artifactsの指定

ちょっと脱線が長引いたのでセクション分けて本題に戻ります。IDEA9あたりからプロジェクトごとに成果物を定義できるArtifactsという機能がついきました。設定箇所は,File->Project Structure->Artifacts。
何ができるって「成果物を定義できる」んですが「成果物ってなによ?」と言うと,要するにJarファイルとかWARファイルとかEARファイルとかってアレです。


使い方は,昔書いたこのあたりが参考になると思います。
IntelliJ CE用Winstoneプラグイン公開しました



これの良いところは,自分のニーズに応じていくつもの成果物を定義できることです。これで,zipファイルも作れれば,実行モジュールだけではなく,リリースモジュールも作れそうなので,ちょっと残念ではあります(だったら自分でプラグイン作ったら?という話でもありますが。:-P


ps.
チーム開発する場合など,ライブラリや成果物の生成はIDEではなくAntやMavenといったビルドツールに任せるのが望ましいのです。ただ,個人の実験や趣味で作るちょっとしたプロジェクトなどは,IDEで完結できることが多いととても楽なのです。