11

jaxb2 xjcプラグインを使用して、からJavaファイルを生成していXSDます。したがって、私はpom.xmlを次のように構成していました。

<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>

開発環境をEclipseIndigoに変更しましたが、これは機能しなくなりました。エラーには、「プラグインの実行はライフサイクル構成でカバーされていません」と表示されます。新しい環境でプラグインが機能するように、プラグインの実行を別の方法で定義する必要があることを理解しています。

このページの指示に従いましたが、M2Eプラグインの実行については説明していませんgenerate-sourcesが、フェーズの実行時にソースファイルが生成されません。

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

助けてくれてありがとう!

4

3 に答える 3

14

最終的に答えを見つけたことがわかりました!EclipseとMavenの統合には、多数のMavenプラグインとの互換性の問題があります。

Eclipseの外部のコマンドラインからMavenビルドを正常に実行できるが、EclipseがPOMに「実行がカバーされていない」エラーを表示する場合は、次のプラグインを追加してみてください。

<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に指示するだけです。

このスニペットを別のStackOverflowの質問で見つけ、別の質問で問題となっているプラ​​グインではなく、「jaxb2-maven-plugin」プラグインに採用しました。

于 2012-08-17T17:44:19.340 に答える
3

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

于 2012-08-17T17:55:48.890 に答える
0

これがご使用の環境に当てはまるかどうかはわかりませんが、アプリがMavenモジュールに分割されている場合、これまでに見つけたニーズに合った最善の解決策は、影響を受けるすべてのモジュールをEclipseIDEから削除することです。再生成が必要なときはいつでも、mvninstallを使用してコマンドラインからビルドするだけです。Eclipseは、リポジトリからのパッケージを使用しており、独自にビルドしようとはしていません。runOnIncrementalフィドルアラウンドは必要ありません(私はかなり長い間使用していました)、赤いモジュール/ラインも、より速くビルドします。

于 2016-10-10T17:28:35.787 に答える