質問

プログラマのチームが同じプロジェクトでNetbeans、Eclipse、およびIntelliJを使用できるようにする最良の方法は何ですか?質問。

どのファイルをソースコード管理にチェックインするべきですか?

役に立ちましたか?

解決

最善の方法は、ビルドプロセスをIDEから独立させることだと思います。つまり、プロジェクトはビルドにIDE固有のファイルに依存するのではなく、 Apacheなどの外部ビルドシステムを使用する必要があります。 Maven Apache Ant 、またはmakeまたはカスタムスクリプト。 Mavenは、直接またはプラグインを介して、ほとんどの一般的なJava IDEでサポートされています。

外部ビルドシステムを使用したくない場合は、少なくともプロジェクトをできるだけ簡単にセットアップする必要があります(つまり、共有ライブラリおよびその他の依存関係用の標準フォルダーを持つことによって)。過去に複数のIDEを持つチームで作業していたとき、プロジェクトを構築するための前提条件が時間とともに変化するため、依存関係の解決に最も多くの時間を費やしました。最悪の場合、開発者は新しいプロジェクトの設定は非常に面倒だと思うため、バージョン管理リポジトリから最新バージョンを取得することを気にかけないこともあります。

プロジェクトに多くのライブラリ依存関係がある場合、バージョン管理リポジトリでバイナリ形式で利用できるようにすることをお勧めします。そうすれば、1つのプロジェクトをビルドするだけで、依存関係のすべての依存関係を解決する必要がなくなります。ただし、これには「公式」を維持する責任者が必要です。バイナリは、変更されるたびに最新のものになります。 (これはMavenリポジトリーで使用されるのとほとんど同じ哲学ですが、Mavenを使用しない場合でも原則は手動で適用できます。)

他のヒント

まあ、それは非常に自己回答的な質問です。

ソース管理にチェックインしないファイルは、IDE自体に関係するファイルです。

これらのファイルを生成するために開発者に任せてください。

Mavenを使用すると、Eclipseの .project .classpath などのファイルを生成できます。 Eclipseは一般に、基本的なファイル構造(新しい Java Project オプションを使用)で非常に簡単に使用できます。

MavenにはNetbeansもサポートされていると思いますが、IntelliJについてはわかりません。

Mavenのサイトは maven.apache.org です。

複数の開発者がいる各IDEについて、すべてのサポートファイルをチェックインします。すべてのデスクで車輪を再発明する理由。

これをさまざまなIDEで実行しましたが、ファイル名の競合はまだありません。

実際、特定のIDEを使用する開発者が1人だけの場合でも、開発環境で他のファイルをバージョン管理するのと同じ理由で、サポートファイルをバージョン管理するのが有利です:履歴、差分、コメントなど。

Eclipseの場合、.classpathおよび.projectファイルになります。

私のチームはMavenを使用しているため、開発者はEclipse固有のファイルをチェックインすることをお勧めしません。これらはMavenから生成できるため、これらのファイルは冗長です。

また、プロジェクト固有のファイルをチェックすると時間を節約できるように見えますが、通常は開発者のワークステーションが異なるために苦痛になり、IDE固有のファイルの競合を解決するのに無駄な時間がかかります。これを回避する唯一の方法は、すべての人に同じ方法で環境を設定させることです。これは、IDEに依存しないアプローチに反します。

同じプロジェクトチーム内で複数のツールセットを使用する場合、多くの考慮事項があります。たとえば、私のチームには、IntelliJを使用するJava開発者と、Eclipseを使用するほとんどのフロントエンド(JSP / CSS / HTML)開発者がいます。環境の拡張サポートを提供するために開発したいくつかのIntelliJプラグインのため、EclipseユーザーをIntelliJに移行中です。複数のプラットフォーム用のプラグインを開発するつもりはないので、全面的にIntelliJで標準化しています。

特定のファイルに関しては、IntelliJと話すことができます。 .iprファイルと.imlファイルをチェックインしました。 .iwsファイルをチェックインしないでください。 Eclipseユーザーもいる場合は、.classpathファイルの依存関係情報を読み取り/格納するようにIntelliJプロジェクトを構成し、VCSにコミットします。

同じSVNリポジトリから複数のIDEを意図的にサポートしています。私たちの考えは、新しい人がチームに加わった場合、または誰かが新しいマシンで作業を開始する必要がある場合、コードベースをチェックアウトし、IDEにインポートしてすぐに作業できるようにすることでした。可能な構成。

開発者側での意味は、IDEファイルへの変更をコミットしないことです。他のすべて(たとえば、src、test、libなど)は、通常は毎日更新してコミットするセットになります。

副次的な利点は、ここでIDEの戦争を完全に排除したことです。NetbeansとEclipseの人々は完全に調和して生きています(IntelliJの人々への要求を見て、ちょっと...;-)。

このトピックに関するその他のコメントと回答については、この質問をご覧ください。 (異なるJava IDEとsvnをどのように処理しますか?)

チェックイン用のIDEファイルの名前を、拡張子.deletethisなどを追加して変更します。新しい人がプロジェクトをチェックアウトするとき、彼らは単に余分な拡張機能を取り除き、行ってもいいです。このようにして、環境を微調整する際のプロジェクトファイルとのソース管理の競合を回避します。また、これらのファイルをチェックインしないように新しい開発者を教育することについて心配する必要はありません。

通常、これは悪い考えだと思います。これがどのような環境かはわかりませんが(おそらくオープンソースですか?)、複数のIDEをサポートするのは本当に残念です。これが避けられない場合は、antスクリプトでビルドを標準化することをお勧めします。多数の依存関係がある場合、これはすべてのプラットフォームで予測可能なビルドを取得する最も簡単な方法です。

IDEの1つがRAD(Eclipseに基づく)である場合、SCMに含めたくない.settingsというフォルダー全体があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top