読者です 読者をやめる 読者になる 読者になる

かまたま日記3

プログラミングメイン、たまに日常

Intellij IDEAのプロジェクト・モジュールの概念、設定ファイルの理解を深める

ヘルプを和訳しつつ勉強

IntelliJ IDEA 14.0.0 Web Help

  • プロジェクトは完全な製品を表す組織的な単位です。
  • プロジェクトはソースコード、ドキュメント、スクリプトのようなアーティファクトを含んでいません。プロジェクトはIDEで一番高レベルの単位であり、Intellij IDEA内でモジュールやライブラリといった呼ばれるものだけでなく、プロジェクト全体の設定も定義します。
プロジェクトの形式とファイル
  • Intellij IDEAは他のメンバーとプロジェクト設定を共有し、管理することを容易にするプレーンテキストXMLファイルにプロジェクトとコンポーネントの設定データを保存します。
  • プロジェクトの設定データの形式はディレクトリベースとファイルベースの二つが利用可能です。
ディレクトリベース形式
  • ディレクトリベースを利用する場合、プロジェクトディレクトリ内に.ideaディレクトリが配置されます。
  • .ideaディレクトリにはプロジェクトの設定ファイル(.xml)一式が含まれています。各ファイルは名前に現れるように特定の領域の設定を含んでいます
    • 例えばcompiler.xml , encodings.xml , modules.xmlなど
  • ほとんどのファイルはプロジェクト自身のコア情報を持っているため、バージョン管理に置かれる(べき)でしょう
  • 例外はworkspace.xmlです。それはウインドウの配置やバージョン管理システムや履歴、その他開発環境に属するデータを保存しています。
ファイルベース形式
  • ファイルベース形式を使う場合、プロジェクトディレクトリ内に二つの設定ファイルがあります。.iprはコアなプロジェクトの情報を保持します。もう一つのファイルである.iwsファイルは個人的なワークスペースの設定を保持します。
  • .iwsファイルはバージョン管理下に置くべきではありません。.iprが置かれるべきです。
  • ファイルベース設定ファイルはディレクトリベースの設定にコンバートできます -> http://www.jetbrains.com/idea/webhelp/converting-project-into-directory-based-format.html

IntelliJ IDEA 14.0.0 Web Help

  • モジュールは独立してテスト、実行、デバッグ可能な独立した機能上の単位です。
  • モジュールは必要なすべてのタスク(ソースコード、ビルドスクリプトユニットテスト、デプロイスクリプト、ドキュメント)を含んでいます。しかし、モジュールはプロジェクトのコンテキスト内のみで機能し、存在します。
  • モジュールの設定情報は.imlファイルに保存されます。通常、そのファイルはモジュールのコンテントルートに配置されます。
  • 開発チームは通常、.imlファイルをバージョン管理で共有します。

まとめ

  • プロジェクトの設定情報の管理方法は2パターン存在する
    • ディレクトリベース
      • .ideaディレクトリ以下のxmlファイルに記述
      • workspace.xml以外はバージョン管理の対象とすべき
    • ファイルベース
      • .iprと.iwsファイルに記述
      • .iprファイルのみをバージョン管理の対象とする
  • モジュールの設定情報は.imlファイルで管理され、バージョン管理の対象とするべき

追記

今はディレクトリベースが推奨とのコメントをいただきました。
ファイル->ディレクトリのコンバート機能が用意されているということはそういうことなんでしょうね。

知ったかぶりしてコメントすると、元々はファイルベース(*.ipr, *.iws)でプロジェクト構成を管理していたんですが、設定項目が増えるとかプラグインの設定ファイルをどこに記録するんだとか、いろいろあってIDEA7〜8あたりからディレクトリベースが登場しました。
今でもファイルベースは選択可能ですが、推奨はディレクトリベースのはずです。