web-dev-qa-db-ja.com

Eclipse m2eでは、ワークスペースプロジェクトを参照する方法は?

Eclipse m2eを使用して別のワークスペースプロジェクトを参照するにはどうすればよいですか?

プロジェクト設定にプロジェクトの依存関係を追加する必要がありますか?ただし、その場合、依存関係はPOMに表示されません。

それらをpomに設定すると、ワークスペースのプロジェクトを参照せず、ローカルリポジトリのjarを参照します。かなり厄介な、誰でも助けることができますか?

29
Wudong

これを行う正しい方法は次のとおりです。

  • POMファイルの依存関係セクションのみを使用し、Eclipseプロジェクト参照をいじらないでください。プロジェクトを右クリックし、Maven>プロジェクト構成の更新を選択して、プロジェクトをMavenのデフォルト設定にリセットします。このように、m2eは依存関係の所有権を持ちます。
  • 参照されているすべてのプロジェクトがEclipseで開いており、Maven natureが有効になっていることを確認します。
  • 各プロジェクトのMaven設定をチェックし、groupIdartifactIdおよびversionがEclipseで開いているプロジェクトと一致することを確認します。したがって、依存するプロジェクトのバージョンがEclipseで1.0.0-SNAPSHOTである場合、依存するプロジェクトのPOMファイルがバージョンで1.0.0-SNAPSHOTを参照していることを確認してください依存関係セクション。
  • 各プロジェクトでWorkspace Resolutionを有効にします。プロジェクトを右クリックして、Maven>ワークスペースの解決を有効にする
  • 最後に、プロジェクトがまだ解決されない場合は、プロジェクトをもう一度右クリックしてから、Maven>プロジェクトの更新

これで問題が解決するはずです。この後、依存関係がまだファイルシステムから参照されている場合は、各依存関係のgroupIdartifactId、特にversionを再度確認します。

また、プロジェクトにエラーがないかどうかを確認します-Mavenインストールを実行してください。

57
nwinkler

これよりもさらに先に進みます。 ever run mvn Eclipse:eclipseあなたのプロジェクトで、あなたはおそらくトラブルに巻き込まれています。 「Referenced Libraries」セクションと「Maven Dependencies」セクションは、Eclipseプロジェクトのセクションで、ライブラリバージョンが競合しており、Eclipseと私自身の避けられない混乱を引き起こしています。

私が見つけた最も安全なことは、mvn Eclipse:cleanコマンドラインからEclipseに戻り、プロジェクトを更新し、結果の問題ダイアログを「OK」してから、Maven> Update Project 。これですべてが整理されました。

8
Huw Roberts

Eclipseがいくつかのプロジェクトのインポートと削除に失敗した場合、mavenリポジトリのインデックスを再構築する必要があります。ここに私がやった方法があります。

  1. 参照プロジェクトがEclipseによってMavenプロジェクトとして適切に認識されているかどうかを確認します。

    メニューバーで[Window -> Show View -> Other...]をクリックします
    [ビューを表示]ウィンドウが表示されたら、Maven -> Maven Repositoriesを選択します
    Mavenリポジトリウィンドウでは、Local Repositories -> Workspace Projectsにプロジェクトがjarファイルとして表示されるはずです。
    Workspace Projectsでプロジェクトが見つからない場合は、Workspace Projectsを右クリックし、Rebuild Indexを選択します。

  2. 参照プロジェクトのMavenを更新する

    参照プロジェクトMaven -> Update Project... -> OKを右クリックします

5
heemin

@nwinklerの応答に対する称賛では、主な問題はバージョン番号の一致です。

共通のシナリオは、互いにロックロックされたバージョンのプロジェクトのセットを開発している場合です。たとえば、プロジェクトとライブラリAPIが非常に疎結合ではないため、ライブラリAPIが関連するアプリプロジェクトバージョンによって消費されるバージョンですが、アプリプロジェクトの過去または将来のバージョンと互換性のない方法で変更される可能性があります。

このような構成でMavenの依存関係を設定する正しい方法(推奨される方法でもあります)は、アプリに特定のバージョンのライブラリを消費させることです-たとえば、古いバージョンのアプリを再構築する場合は、以前にコンパイルされたライブラリのバージョン。

アプリプロジェクトのPOMライブラリ依存関係をリリースバージョンに設定し(_1.0.0_と言います)、アプリとライブラリプロジェクトの両方をSNAPSHOTリリースに設定して次のリリースに取り組んでいます(_2.0.0-SNAPSHOT_と言います) 、m2eはライブラリバージョンを正しく解決せず、古いバージョンをダウンロードする可能性が高いため、「Open Decleration」などのEclipse機能を使用しようとすると、ダウンロードjar(ソースアタッチメントがない場合もある)がターゲットになります。

これを回避する1つの方法は、アプリのPOM依存バージョンを範囲に設定することです。したがって、_1.0.0_に依存する代わりに、_[1.0.0-)_に依存します。そのようなオープンな範囲で、m2eはワークスペースライブラリプロジェクトを喜んで見つけます。ただし、コミット、ビルド、およびパブリッシュする前に「正しい」バージョンに戻すことをお勧めします。これは非常にエラーが発生しやすくなります。

私の解決策は、ビルドプロファイルを使用し、次のようにm2eのカスタムプロファイルを設定することです。

  • プロパティを使用して依存関係のバージョンを、公開するバージョンに設定します。
_...

<properties>
<my.library.version>1.0.0</my.library.version>
</properties>

<dependencies>
  <dependency>
    <groupId>my.group</groupId>
    <artifactId>my.library</artifactId>
    <version>${my.library.version}</version>
  </dependency>
</dependencies>

...
_
  • 次に、何もしないデフォルトでアクティブなプロファイルと、ライブラリバージョンプロパティを範囲でオーバーライドするEclipse固有のプロファイルを含むプロファイルセクションを追加します。
_...

<profiles>
    <profile>
        <id>default</id>
        <activation><activeByDefault></activeByDefault></activation>
    </profile>

    <profile>
        <id>Eclipse</id>
        <properties>
            <my.library.version>[1,)</my.library.version>
        </properties>
    </profile>
</profiles>

...
_
  • 最後にプロジェクトのプロパティに移動し、「Maven」の下で「Eclipse」と「Active Maven Profiles」に入力します。

enter image description here

  • 次に、「適用して閉じる」。

Eclipse m2eは常にバージョン範囲を確認し、Eclipseプロジェクトの依存関係を解決します(ローカルMavenリポジトリにライブラリがインストールされている場合でも、Eclipseプロジェクトのバージョン番号が高くなるため)。他のビルダーには元の、厳密なバージョン番号。

0
Guss

また、正しい目標を実行していることを確認する必要があります。

installゴールを実行しないと、リポジトリにコピーされず、コンパイルされません。

目標の詳細については、 https://maven.Apache.org/guides/introduction/introduction-to-the-lifecycle.html をご覧ください。

0
Clare McLennan