web-dev-qa-db-ja.com

IntelliJのベストプラクティスIDEA 9 + Maven +バージョン管理

プロジェクトはMavenを使用しているため、POMファイルがプロジェクト情報の主なソースです。プロジェクトファイルには、保持しておくと便利ないくつかの便利な設定があります。

OTOH IDEAは、プロジェクトファイル構造に冗長な変更を多く作成しすぎて、SVN履歴を汚染し、場合によっては競合を引き起こすようです。

.ideaディレクトリと* .imlファイルをバージョン管理下に置く必要がありますか?略さずに?ある程度?

更新:それで、私と私のチームのために働いていることがわかったベストプラクティスはこれまでのところです:

  1. すべてのIDEAファイル、*。imlおよび.ideaディレクトリをチェックインします。これらには貴重な情報が含まれており、更新するたびに再作成するのは時間の無駄です。
  2. 開発者ごとにプライベートブランチを作成する
  3. .ideaディレクトリにcd
  4. svnはそれを対応するプライベートブランチに切り替えます
  5. 通常のコミットでIDEAファイルをチェックインしないでください-履歴を汚染します。特別なコミットでチェックインしてください。

このようにして、.ideaディレクトリの内容をバージョン管理に保持しますが、通常のコミットの邪魔にならないようにします。すべての開発者は、他の人のIDEAディレクトリにアクセスできます。

更新2:この質問が書かれたので、多くの回答者からのアドバイスに従って、私の慣習をnotバージョン管理にIntelliJファイルをチェックインするように変更しました。これは、MavenとGradleの両方に対する私の現在のプラクティスです。ツールは、重要な情報を元の.POMまたは.gradleファイルからいつでも再現できるように開発されました。ファイルが変更されると、IDEは変更を確実に追跡するため、IDEファイルを頻繁に失うことがないため、チェックインする必要がありません。

更新3:この質問をしてから7年経った今でも、関連性があるようです。同じベストプラクティスがGradleにも適用されます(おそらくSBTも):IDEファイルをチェックせず、必要に応じて基本的なPOM、.gradle、またはSBTファイルから再作成します。

41
Sasha O

簡単な答え:これらのファイルは「生成」できるため、ソース管理リポジトリに配置しないでください(これは、必要がない場合、煩わしい場合、他の環境を壊す可能性がある場合はさらに当てはまります)。

私は個人的にsvn:ignoreに次の値を使用します。

target 
*~ 
*.log 
.classpath 
.project 
*.ipr 
*.iws 
*.iml 
.settings 
17
Pascal Thivent

Mavenの優れた点の1つは、POMをEclipse、Idea、およびNetbeansのネイティブプロジェクトに変換するためのツールサポートが存在することです。 pomをお持ちの場合は、ネイティブプロジェクトを非常にすばやく作成できます。

そのため、RMIスタブまたはクラスファイルをチェックインするよりも、ソース管理下の.ideaまたは* .imlファイルをチェックインすることはありません。

15
sal

.ideaディレクトリをバージョン管理に入れるべきだと思います。そこに含まれる構成のほとんどは、バージョンを追跡する必要があります。コンパイラ構成。

バージョン管理に属さない唯一のファイルは.idea/workspace.xmlです。これは、ローカル環境に固有の構成のみが含まれているためです。

IntelliJ Ideaは、実際にはデフォルトでworkspace.xmlを無視リストに入れるため、Ideaを使用してチェックインする場合は、何も変更せずにすべて設定する必要があります。

14
alexei.vidmich

標準的な答えは「プロジェクトファイルをチェックインせず、.pomだけをチェックインする」であることがわかります。しかし、.iprファイルのようなものには、.pomファイルから派生できない便利な設定がたくさん含まれています。仲間のIntelliJユーザーがこれらの設定を共有したい場合はどうなりますか? .iprファイルはバージョン管理されるように設計されていることを知っています(たとえば、 このスレッド を参照)。実際の答えがあればいいのですが、この問題に関する良い習慣はまだ見つかりません。

9
mcherm

私の意見では、IDE特定のファイルはバージョン管理から除外する必要があります。IDE独立した形式で、可能な限り多くの情報を保持する必要があります。 Mavenのpomファイルなどのように。すべての重要なプロジェクト設定をそこに保持できます。すべての主要なプロジェクト設定をpomファイルに保持しているので、IDEAだけでなく、チェックインする重大な理由もありません。プロジェクト構成、ただしその他のIDE特定の構成。さらに、.ideaフォルダースタイルのプロジェクト構成は、変更セットログを実際に汚染します。それでも、IDEAプロジェクト設定を保持する必要があります。バージョン管理では、少なくともそれらを単一の.iprファイル形式で保存できます。

3

私はこのパーティーに遅れていますが、この正確な問題が私を悩ませてきました。そして、少なくとも私たちのソース管理システムでは、うまくいくと信じていることに触発されました。

IntelliJファイルは、信頼できるpom.xmlおよびソースと「一緒に」保存する必要はありません。ソースに関連しない変更がソースツリーの別の場所に記録されている場合、バージョン管理履歴は「汚染」されません。

そこで、IntelliJファイルをバージョン管理システムの並列の場所に移動し、単純なファイル/ディレクトリマッピングを使用して、開発者のマシンでソースファイルとプロジェクトファイルを再統合し、純粋に影響を与えるファイルに対するバージョン管理システムの変更を監視します。ビルド。

1
baliset