Eclipse m2eを使用して別のワークスペースプロジェクトを参照するにはどうすればよいですか?
プロジェクト設定にプロジェクトの依存関係を追加する必要がありますか?ただし、その場合、依存関係はPOMに表示されません。
それらをpomに設定すると、ワークスペースのプロジェクトを参照せず、ローカルリポジトリのjarを参照します。かなり厄介な、誰でも助けることができますか?
これを行う正しい方法は次のとおりです。
これで問題が解決するはずです。この後、依存関係がまだファイルシステムから参照されている場合は、各依存関係のgroupId、artifactId、特にversionを再度確認します。
また、プロジェクトにエラーがないかどうかを確認します-Mavenインストールを実行してください。
これよりもさらに先に進みます。 ever run mvn Eclipse:eclipse
あなたのプロジェクトで、あなたはおそらくトラブルに巻き込まれています。 「Referenced Libraries」セクションと「Maven Dependencies」セクションは、Eclipseプロジェクトのセクションで、ライブラリバージョンが競合しており、Eclipseと私自身の避けられない混乱を引き起こしています。
私が見つけた最も安全なことは、mvn Eclipse:clean
コマンドラインからEclipseに戻り、プロジェクトを更新し、結果の問題ダイアログを「OK」してから、Maven> Update Project 。これですべてが整理されました。
Eclipseがいくつかのプロジェクトのインポートと削除に失敗した場合、mavenリポジトリのインデックスを再構築する必要があります。ここに私がやった方法があります。
参照プロジェクトがEclipseによってMavenプロジェクトとして適切に認識されているかどうかを確認します。
メニューバーで[Window -> Show View -> Other...
]をクリックします
[ビューを表示]ウィンドウが表示されたら、Maven -> Maven Repositories
を選択します
Mavenリポジトリウィンドウでは、Local Repositories -> Workspace Projects
にプロジェクトがjarファイルとして表示されるはずです。Workspace Projects
でプロジェクトが見つからない場合は、Workspace Projects
を右クリックし、Rebuild Index
を選択します。
参照プロジェクトのMavenを更新する
参照プロジェクトMaven -> Update Project... -> OK
を右クリックします
@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>
...
_
_...
<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>
...
_
Eclipse m2eは常にバージョン範囲を確認し、Eclipseプロジェクトの依存関係を解決します(ローカルMavenリポジトリにライブラリがインストールされている場合でも、Eclipseプロジェクトのバージョン番号が高くなるため)。他のビルダーには元の、厳密なバージョン番号。
また、正しい目標を実行していることを確認する必要があります。
installゴールを実行しないと、リポジトリにコピーされず、コンパイルされません。
目標の詳細については、 https://maven.Apache.org/guides/introduction/introduction-to-the-lifecycle.html をご覧ください。