2011-10-20 14 views
12

EclipseとMavenを使用したマルチモジュールプロジェクトがあります。私がこれまでに働くことができる唯一の方法は、親モジュールが他のモジュールのピアであったプロジェクトのフラットレイアウトを使用することでした。これはm2eclipseとSubversionでうまくいきました。Eclipse + Maven + Git +マルチモジュールプロジェクト=不幸

今度はGitとGitHubに移動したいと思います。私はGitHub上の単一のプロジェクトとして、すべてのモジュールとともに、プロジェクト全体を公開したいと思います。問題は、Eclipse/GitプラグインのEGitが、プロジェクトのグループではなく、プロジェクトを一度に1つずつ管理したいということです。レイアウトがフラットな場合は、それを行うことはできません。

正しい答えは、標準のMaven階層レイアウトを使用し、親モジュールとすべてのモジュールを1つのユニットとして管理することです。しかし、Eclipseはそれを気に入らず、入れ子にされたプロジェクトを受け入れるEclipseを手に入れることはありません。 m2Eclipseは階層をサポートしていません:https://issues.sonatype.org/browse/MNGECLIPSE-2291

あなたは何をしていますか?コマンドラインからGitを実行し、Eclipseでどのファイルが変更されたかを確認する機能を放棄しますか?あるいはEclipseを放棄しますか?

答えて

12

標準のMavenマルチモジュール構造は、単一のgitリポジトリとして、Eclipse IndigoのM2eとその環境に現れるgitプラグインで完璧に動作します。あなたのためにあなたのフェッチを行うようにEclipseに頼むことはできませんが、コマンドラインから引っ張ってしまえば、Team/Shareを使って、 'Git!'すべてが順調です。

私はソースが何であるかを見ています:階層は、あなたがインポートする '既存のプロジェクト'ではなく、ワークスペース内のプロジェクトの問題です。ツリーを取得するための

  1. 使用のgitのsvnクローン:ここ

    は、一般的なワークフローです。それは在庫、階層mvnのマルチモジュールツリーです。

  2. eclipseでは、import/maven/existing mavenプロジェクトを使用してください。ツリー全体
  3. でのポイントは、それが正常に動作し、すべての
  4. OK

を選択します。ネスティングは1ビットを食らわせることはありません。私は、bzが指している問題は何か分かりません。

m2eを使用する前は、maven-eclipse-pluginを使用しました。また、これらのケースでは、<packaging>pom</packaging>のプロジェクトを集約するための.project/.classpathを生成しないため、実際には何も入れ子にされることはありません。

私は一人ではありません。自分で試すことができるオープンソースの例については、開発者のセットアップ手順をcxf.apache.orgとして参照してください。

+0

は、階層型またはフラットあなたの構造ですか? – ccleve

+0

階層的です。 – bmargulies

+0

どのようにしてEclipseを階層レイアウトに対応させましたか?私はコンパイルすることはできません。 https://bugs.eclipse.org/bugs/show_bug.cgi?id=245412によると、Eclipseはそれらをまだサポートしていません。 – ccleve

1

あなたのモジュールを階層レイアウトのGitに入れることができます。これらのモジュールをMavenでビルドします。これらのモジュールがEclipseで認識されたプロジェクト(java、C++、phpプロジェクトなど)であれば、ワークスペースのフラットなレイアウトとしてワークスペースにインポートできます。

-- the root of Git working directory 
    -- moudule1 
    -- project1(a java project) 
     -- .project(a project file recognized by eclipse JDT) 
     -- pom.xml 
    -- project2(a java project) 
     -- .project 
     -- pom.xml 
    -- module2 
    -- projectA(a java project) 
     -- .project(a project file recognized by eclipse JDT) 
     -- pom.xml 
    -- projectB(a c++ project) 
     -- .project(a project file recognized by CDT) 
     -- pom.xml 
+0

?物理的にディスク上に階層的に配置されている場合、どのようにそれらをフラットにインポートしますか? – ccleve

+0

ワークスペースは、プロジェクトの場所(ワークスペースの下またはディスク上の任意の場所)には関係ありません。各プロジェクトはルート・フォルダーの下に.projectファイルしかありません。Eclipseは、それをワークスペースにコピーすることなくワークスペースにインポートできます。私の更新された答えを見てください。 – Kane

4

古いバージョンのツールで作業している可能性はありますか?

Eclipse 3.7(Indigo)、M2Eclipse(1.0)、EGit(1.0)を使用して動作するMavenマルチモジュールプロジェクトがあります。

ファイルシステムでは、マルチモジュールプロジェクトには1つの親ディレクトリがあります。

Eclipseでは、モジュールごとに個別のプロジェクトがあります。

M2Eclipseは依存関係管理を完全に行います。

トップレベルには単一のgitリポジトリ(.gitディレクトリ)があり、EGitは完全に機能します。

+0

+1以前のバージョンを使用していたため、アップグレードしたときにすべてが変更されました。 – ccleve

+1

"Eclipseではモジュールごとに別々のプロジェクトがあります。"疑問に思う人にとって、ファイルシステムは正常な階層ですが、m2eclipseでは、親/子モジュールを単一のプロジェクト階層として管理することはできません。 m2eclipseのすべてのモジュールは、Eclipseにプロジェクトを持っていなければなりません。さもなければ、Eclipseはそれらの間のクラスタイプまたは関係を見つけません。 –

0

Mavenプロジェクトでは、Mavenインポートウィザード(Gitからアクセス可能)を使用して複数のインポートを同時に行うことができます。 インポートしようとしているプロジェクトの種類がわからない場合は、さまざまなファイルから構成を導き出すことで、プロジェクトを「ベスト」としてインポートする新しいEasymportを使用できます。あなたはすべてのそれらのプロジェクトを得ればhttps://github.com/jbosstools/jbosstools-playground#easymport-easy-and-smart-openimport-of-a-project

を参照してください、あなたは、より正確に、あなたのMavenプロジェクトをマッピング、階層/ネストされたレイアウトでプロジェクトが表示されますされ、ネストルプラグインを使用することができます。https://github.com/jbosstools/jbosstools-playground#nestor-view-nested-projects

関連する問題