55

プロジェクト用にいくつかの Java クラスを生成するために Google Protocol Buffers を使用しています。Maven 2 とその「antrun」プラグインを使用すると、これらのクラスはコンパイル前に新しく生成され、ターゲット/生成されたソースに出力され、ビルド中にクラスパスに配置されます。したがって、POM からプロジェクトをビルドすることは問題ありません。

ただし、Eclipse は生成されたクラスを解決する方法を知りません。これは、それが含まれているフォルダーが開発中に IDE のクラスパスにないように見えるためです。私は m2eclipse を使用しており、依存関係を管理しているので、Maven がこれを処理することを期待していました。

生成されたコードの IDE サポート (コード補完など) を取得するにはどうすればよいですか?

4

10 に答える 10

26

m2eclipse はこれをサポートしていません。target/generated-sourcesフォルダーをソース フォルダーとして手動で追加する必要があります。m2eclipse に「プロジェクト構成の更新」を指示すると、これが上書きされてしまうため、元に戻す必要があります。

また、Eclipse がワークスペース内の変更を探していることを確認してください。

ただし、いくつかの問題があるかもしれません。最終的に、他のクラスを解決できないために一部のクラスをコンパイルできないというエラーが発生します。ただし、コード補完は機能します。この問題の根本的な原因は、Maven が でクラス ファイルを変更するときに Eclipse が混乱することですtarget

これを解決するには、Maven とは別の場所にコンパイルするように Eclipse に指示する必要があります。

于 2009-07-28T08:36:41.337 に答える
13

プロジェクトエクスプローラーに表示されるのは、通常の「参照ライブラリ」の代わりに「MavenDependencies」という名前のコンテナーです。これは、m2eclipseがビルドパスを管理していることを意味します。

私の場合、これを実現するために、[プロジェクト]-> [プロパティ]の[Maven]セクションで[モジュールを含める]をオンにし、[リソースを処理するときにMavenコンパイラプラグインをスキップする]をオフにしました。

于 2009-07-28T08:21:20.357 に答える
12

個人的には、生成されたクラスを別のプロジェクトとして設定し、それをメインの (生成されていない) プロジェクトの依存関係にすることで、この問題を解決しました。私は wsdl2java を使用して Web サービス クラスを生成していたので、サブプロジェクトの「ソース」は wdsl と xsds でした。wsdl が定期的に変更されている場合でもうまく機能しました。

于 2009-07-29T08:36:31.043 に答える
9

Maven と wsdl2java を使用して生成されたコードでこの問題が発生しました。これを解決するために Eclipse Juno で行ったことを次に示します。プロジェクトの名前が project1 であるとします。

  1. project1 を右クリックし、[プロパティ] を選択します。
  2. 左から Java Build Path を選択し、Libraries タブを選択します。
  3. [クラス フォルダーの追加] をクリックします。
  4. bin ディレクトリを選択し、[OK] をクリックします (project1/target/generated-sources/bin)
  5. [OK] をクリックしてプロジェクトを更新します

追加のボーナスとして、ソース コードを添付することもできます。

  1. 作成したばかりの新しいクラス フォルダーの横にある矢印をクリックします。
  2. ソースの添付ファイルをクリックします
  3. 編集ボタンをクリックします
  4. パスを /project1/target/generated-sources/axis2/src に設定します
  5. [OK] をクリックします。
于 2013-02-13T17:18:26.627 に答える
4
  1. プロジェクトを右クリックし、[プロパティ] を選択します
  2. 左から Java Build Path を選択し、Source タブを選択します。
  3. フォルダの追加をクリック
  4. bin ディレクトリを選択し、[OK] をクリックします。
  5. (プロジェクト/ターゲット/生成されたソース/xxxx) [OK] をクリックし、プロジェクトを更新します。
于 2016-05-30T21:40:35.530 に答える
2

Eclipseプロジェクトを更新しようとしましたか?

代替テキスト
(出典:oyvindhauge.com

外部ツールが新しいファイルを生成したり、古いファイルを更新したりすると、Eclipseは次のリクエストまで変更を検出できません。

別のオプションは、新しいカスタムビルダーを定義し、そのビルダーが「完了時にリソースを更新する」ように指定することです。

代替テキストhttp://www.cs.lth.se/EDA180/2005/Verktyg/eclipse_refresh.gif

于 2009-07-28T08:21:03.303 に答える