12

Eclipse と Maven を使用したマルチモジュール プロジェクトがあります。過去にそれを機能させる唯一の方法は、親モジュールが他のモジュールのピアであるプロジェクトにフラット レイアウトを使用することでした。これは、m2eclipse と Subversion で正常に機能しました。

次に、Git と GitHub に移行したいと思います。プロジェクト全体を、すべてのモジュールと共に、GitHub で単一のプロジェクトとして公開したいと考えています。問題は、Eclipse/Git プラグインである EGit が、プロジェクトのグループではなく、一度に 1 つのプロジェクトを管理したいということです。

正解は、標準の Maven 階層レイアウトを使用して、親モジュールとすべてのモジュールを 1 つの単位として管理することです。しかし、Eclipse はそれを好みません。いくらいじっても、Eclipse はネストされたプロジェクトを受け入れることができません。m2Eclipse は階層をサポートしていません: https://issues.sonatype.org/browse/MNGECLIPSE-2291

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

4

4 に答える 4

12

単一の git リポジトリとしての標準的な Maven マルチモジュール構造は、M2e とその環境に表示される git プラグインを備えた Eclipse Indigo で完全に機能します。Eclipse にフェッチを依頼することはできませんが、コマンド ラインから取得したら、Team/Share を使用して「Git!」と言います。そしてすべてが順調です。

ソースが何であるかがわかると思います。階層は、インポートする「既存のプロジェクト」ではなく、ワークスペース内のプロジェクトの問題です。

一般的なワークフローは次のとおりです。

  1. git svn clone を使用してツリーを取得します。これはストックの階層的な mvn マルチモジュール ツリーです
  2. Eclipse では、インポート/maven/既存の maven プロジェクトを使用します。木全体を指す
  3. すべて選択
  4. わかった

それは正常に動作します。ネスティングは日食を少しも妨げません。bz がどのような問題を指しているのかわかりません。

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

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

于 2011-10-20T20:22:31.423 に答える
4

古いバージョンのツールを使用している可能性はありますか?

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

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

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

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

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

于 2011-10-21T23:22:22.150 に答える
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 
于 2011-10-21T03:19:35.850 に答える