2013-05-31 13 views
6

私はEclipse/Mavenと "Workspaceプロジェクトからの依存関係の解決"のコーナーケースのように思えます。私のプロジェクトには、書かれたコードと生成されたコードが混在していて、生成されたコードはJAXWSを使用する依存関係から来ています。Eclipse/Mavenと「依存関係をワークスペースプロジェクトから解決する」では、jarsとソースを混在させることはできません。

「依存関係の解決」をチェックすると、Eclipse/MavenはJAR依存関係を無視し、ワークスペースを見るだけですべてを解決しようとします。その結果Eclipseには「パッケージ/クラスが見つかりません」というエラーが表示されます生成されたコードに関連しています)。たとえプロジェクトがコマンドラインからMavenでうまく構築されたとしても。

一方、チェックを外すと、Mavenリポジトリ内のJARだけを見るだけですべてが解決されます。 2番目のオプションは一般的には機能しますが、クラスや変数をCtrlキーを押しながらクリックすると、クラスファイルエディタが表示され、「ソースが見つかりません」と表示されます。また、IDEでコードを編集すると同期が外れることもありますが、その後は "maven install"を実行しないでください。

これは主にEclipseで不便だと思われますが、迷惑です。私はソース(またはデバッグ)でビルドするためにMavenの依存関係を変更することでこれを解決することを検討していますが、必ずしもすべてでこれを行うことはできません。 "Resolve dependencies"オプションは、私が記述したように一方向または他の方法で排他的に機能することを意図していますか?

答えて

3

ビルドヘルパーのMavenプラグインを見たいかもしれません。

あなたはこのようにそれを設定することができます。

   <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>build-helper-maven-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <id>add-source</id> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>add-source</goal> 
         </goals> 
         <configuration> 
          <sources> 
           <source>target/generated-sources</source> 
           <source>target/jaxws/wsimport/java</source> 
          </sources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

これは、生成されたソースを見ているためにEclipseのMavenプラグインを伝え、あなたのプロジェクトのクラスパスに含めます。

また、Eclipseで生成されたソースをクラスパスに手動で追加することもできます。 (生成されたフォルダを右クリック - >ビルドパスに追加)

+0

フォルダのコンテキストメニューで「ビルドパスを追加」オプションを見つけることができない人のために、私の場合(Eclipse Luna)は 'ビルドパス' - > 'ソースフォルダとして使用'の下にあります。 –

0

私は、あなたが参照を解決する必要がある前に何らかの形でビルドを強制するビルドの後にのみ存在するファイルを参照したいからだと思います。 Eclipse内からビルドを行うだけで、不正行為をする可能性があります。これは、生成されたソースファイルを参照可能な状態にしたままにします。しかし、私は、Mavenの哲学は、生成されたコードを別のMavenアーティファクトに完全に移動させることになると思います。これにより、2つのコードグループのライフサイクルを分けることができ、Eclipseを使用して手作業でコードを編集する準備ができたら、生成されたクラスへの参照が解決されます。独立した独立したモジュール。

0

これは古い問題です。しかし、私は更新された "m2e-wtp"プラグインでJunoで同じことに遭遇しました。だから私は他の読者の利益のためだけに答えている。

これは戦争プロジェクトでのみ発生していました。唯一解決したのは、最終的には、warプロジェクトのフォルダの下にある ".settings"フォルダを削除し、Eclipseを再起動することでした。