1

Eclipse 用の Git プラグイン (「Egit」) があることは知っていますが、コマンド ラインで Git を行うのが好きで、Eclipse でコーディングするのが好きなので、それらを分けておきたいと考えています。

Git リポジトリのクローンを作成しました (これは重要ではないと思いますが、参考までにhttps://github.com/spinscale/dropwizard-jobs.git)。次に、Eclipse (Juno) を開いて新しい Java プロジェクトを作成し、複製したリポジトリのルートをプロジェクトのベース パスとして選択しました。プロジェクトを Java ファセットに関連付けるかどうかを Eclipse が尋ねてきたので、[OK] をクリックしました。

このプロジェクトには大きな依存関係ツリーがあります (必要に応じて、4 つの POM ファイルを確認してください)。私はビルドに Maven を使用していない (Gradle を使用している) ため、これらの POM の依存関係をディレクトリに解決するスクリプトを実行し、libこの Eclipse プロジェクトにディレクトリを作成し、すべての JAR をそこにコピーしました。次に、これらすべての JAR をプロジェクトのクラスパスに追加しました。

現在、Eclipse の [問題] ビューに10 個のエラーが表示されていますが、これらはすべて同様のエラーです。

  • タイプ ApplicationStartTestJob はすでに定義されています ApplicationStartTestJob.java /dropwizard-jobs/dropwizard-jobs-core/src/test/java/de/spinscale/dropwizard/jobs 行 10 Java 問題
  • タイプ ApplicationStartTestJob は既に定義されています ApplicationStartTestJob.java /dropwizard-jobs/dropwizard-jobs-guice/src/test/java/de/spinscale/dropwizard/jobs 行 10 Java 問題
  • さらに8つすべてこのようなものなど

案の定、プロジェクト全体を展開すると、次の構造になっていることがわかります。

dropwizard-jobs/
    dropwizard-jobs-core/
        src/test/java/
            de.spinscale.dropwizard.jobs
                ApplicationStartTestJob.java
    dropwizard-jobs-guice
        src/test/java/
            de.spinscale.dropwizard.jobs
                ApplicationStartTestJob.java
    dropwizard-jobs-spring
        src/test/java/
            de.spinscale.dropwizard.jobs
                ApplicationStartTestJob.java

したがって、このプロジェクトのメンテナーは、ユニット テストの名前をまったく同じパッケージ/クラス名に変更したいと考えているようです。何らかの理由で、Eclipse はそれらをすべて同じパッケージ内に属していると見なします。これをテストするために、名前を別の名前に変更dropwizard-jobs-core/src/main/java/de.spinscale.dropwizard.jobs.ApplicationStartTestし、同じことを行って、確かに、既に定義されていることにdropwizard-jobs-guice/src/main/java/de.spinscale.dropwizard.jobs.ApplicationStartTest関連するすべてのエラーがなくなりました。ApplicationStartTest

したがって、私の疑いが確認されました。これらのサブフォルダー ( 、および)の意図は、それらが別個のクラスパスを持つサブプロジェクトであることです。Eclipse は、これらすべてのソース フォルダーが同じプロジェクトの一部であると見なし、すべてのクラスを同じクラスパスにまとめています。各サブプロジェクトは同じ単体テスト命名規則 (各サブプロジェクトに同じパッケージ/クラス名) を使用するため、Eclipse は同じパッケージ内の複数のクラスを同じ名前を持つものとして認識します。dropwizard-jobs-coredropwizard-jobs-guicedropwizard-jobs-spring

いいよ!私は問題を理解しました。しかし、解決策は何ですか?理想的には、これらすべてを同じプロジェクト内に保持できますが、おそらく.classpathファイルを変更するか、クラスパスの観点からサブプロジェクトを分離しておくように Eclipse に指示する同様のことを行います。何か案は?

4

2 に答える 2

1

単に eclipse m2e プラグインをダウンロードし、プロジェクトをインポートして (ワークステーションで既にチェックアウトしていることを考慮して)、MAVEN コマンドの学習に時間を費やす必要があります。ここでは、maven の親プロジェクトとモジュールの概要を確認できます。Maven 親 pom とモジュール pom

于 2014-12-26T18:25:18.363 に答える
0

考えられる解決策の 1 つは、マルチモジュール maven プロジェクトで親プロジェクトとサブプロジェクトを自然に定義できるmavenを導入することです。
Eclipse の外部でその構成を実際にテストし、M2Eclipseを使用して親とその依存関係を同時にインポートすることができます (この回答でコメントされているように)。

sonatype/m2eclipse-guice実際、M2Eclipse プロジェクト自体には、適切な pom.xmlを使用して、独自の guive サブプロジェクトのモデルとして使用できる guice テスト プロジェクトが repo にあります。

于 2014-12-26T18:20:49.483 に答える