2012-04-30 16 views
11

XSDからjavaファイルを生成するためにjaxb2 xjcプラグインを使用しています。 Maven JAXB2 XJCプラグイン:M2Eプラグインの実行対象外

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jaxb2-maven-plugin</artifactId> 
      <version>1.3</version> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>xjc</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <packageName>com.mypackage.model</packageName> 
       <schemaDirectory>${basedir}/src/main/resources/XSD</schemaDirectory> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

私はインディゴをEclipseに私の開発環境を変え、これはもはや機能しません。したがって、私は次のように私のpom.xmlを構成するために使用されます。エラーは「プラグインの実行はライフサイクル設定でカバーされていません」と表示されます。私は、私の新しい環境で動作するように、プラグインの実行を別々に定義しなければならないことを理解しています。

M2E plugin execution not coveredの手順に従いましたが、generate-sourcesフェーズを実行するとソースファイルは生成されません。

私のファイルが正しく生成されるように、私のpomを正確にリファクタリングする方法を誰かに教えてもらえますか?

ありがとうございます!

+0

このオフラインでの回答はありますか?私は同じ問題を自分で解決しようとしています。 –

+0

なし...もし見つけたら、投稿してください。私はそれを受け入れてうれしく思います:) –

答えて

14

私は、になりました。 EclipseとMavenとの統合には、多くのMavenプラグインとの互換性の問題があります。

あなたが正常にこのプラグインを追加してみてください、その後、Eclipseの外部コマンドラインからビルド、まだしかし、Eclipseは、あなたのPOMで「実行カバーされていない」エラーを示してMavenを実行することができます示されているように

<build> 
    ... 
    <pluginManagement> 
     <plugins> 
      <!--This plugin's configuration is used to store Eclipse m2e settings 
       only. It has no influence on the Maven build itself. --> 
      <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId>org.codehaus.mojo</groupId> 
            <artifactId>jaxb2-maven-plugin</artifactId> 
            <versionRange>[1.3,)</versionRange> 
            <goals> 
             <goal>xjc</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <execute /> 
           </action> 
          </pluginExecution> 
         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

上記のコメントでは、このプラグインはEclipseの外では何もしません。 EclipseはJAXBプラグインをいつ実行するのかをEclipseに指示するだけです。なぜなら、Eclipseはそれ自体を理解するほどスマートではないからです。

このスニペットはanother StackOverflow questionにありますが、他の質問の問題のプラグインではなく、 "jaxb2-maven-plugin"プラグインに採用しました。

+0

今朝、私は上記と同じことをして、私の日食の誤りを修正しました。 – Venky

3

M2Eでサポートされているmaven-jaxb2-pluginに切り替えることもできます。上記のSteve Perkinsの答えは一般的にM2Eがサポートしていないプラグインにも適用されます。

+0

私のプロジェクトで 'maven-jaxb2-plugin'を最新バージョン(0.13.1)で使用していますが、質問にあるようにEclipseでも同じエラーが表示されます。それを修正するためにスティーブ・パーキンズの答えの継ぎ目を適用するだけです。 – MJar

0

これがあなたの環境に当てはまるのかどうかは分かりませんが、もしアプリケーションがmavenモジュールに分割されていれば、私が今まで見つけたニーズに合った最適なソリューションはeclipse IDEから影響を受けるすべてのモジュールを削除することです。再生成が必要なときは、mvn installコマンドラインからビルドするだけです。 Eclipseはリポジトリからのパッケージを使用しており、独自のビルドを試みていないので、runOnIncrementalのフィドルアバウト(私はずっと使用していました)、赤いモジュール/ラインは不要です。

関連する問題