1. ホーム
  2. java

[解決済み] eclipse で親 pom の pluginManagement を使用したプラグイン実行がライフサイクル設定の対象外であるエラーが発生する

2022-02-04 09:39:54

質問

親のpom.xmlのpluginManagementタグにjaxws-maven-pluginを記述し、子のpomでこのプラグインを参照しています。

mvnクリーンインストールは問題なく実行されています。しかし、eclipseは次のような文句を言っています。 "プラグインの実行はライフサイクル構成によってカバーされていません: org.codehaus.mojo:jaxws-maven-plugin:1.12:wsimport (execution: FirstWsdl, phase: generate-sources)".

eclipseでこのエラーを回避する方法を教えてください。

親POM

<pluginManagement>
    <plugins>
    ...
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <version>1.12</version>
        <executions>
            <execution>
                <id>FirstWsdl</id>
                <goals>
                    <goal>wsimport</goal>
                </goals>
                <phase>generate-sources</phase>
                <configuration>
                    <wsdlLocation>location/file.wsdl</wsdlLocation>
                    <wsdlFiles>
                        <wsdlFile>file.wsdl</wsdlFile>
                    </wsdlFiles>
                    <packageName>com.xxx.package</packageName>
                </configuration>
            </execution>

        </executions>
        <configuration>
            <sourceDestDir>${basedir}/generated</sourceDestDir>
            <verbose>true</verbose>
            <extension>true</extension>
            <keep>true</keep>
            <vmArgs>
                <vmArg .../>
            </vmArgs>
        </configuration>

    </plugin>
...
   </plugins>
</pluginManagement>   

子ポム

<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
    </plugin>
</plugins>

この質問と回答を見て Spring DataのMavenビルドでプラグインの実行がライフサイクル構成でカバーされていない場合の解決方法について しかし、このエラーを回避するためには、親と子の両方のpomでpluginManagementを使用すべきでしょうか?

解決方法は?

というはずです。

  • は、Wiki の " ページで文書化されています。 M2Eプラグインの実行は対象外 となります。

    プロジェクトのビルドライフサイクルマッピングは、プロジェクトの pom.xml または、Eclipseプラグインによって貢献されるか、m2eに同梱されている一般的なMavenプラグインがデフォルトで使用されます。
    これらを " と呼んでいます。 ライフサイクル・マッピング・メタデータ・ソース となります。
    m2eは、どのマッピングメタデータソースにもライフサイクルマッピングが存在しないすべてのプラグイン実行に対して、以下のようなエラーマーカーを作成します。

  • illustrated in " Spring DataのMavenビルドで「プラグインの実行がライフサイクル構成でカバーされていない」を解決する方法 "(参考にさせていただきました)。

    • 親PomでlifecycleMappingMetadataを追加することで、どちらかの方法で行います。
    • でプラグインを囲むか <pluginManagement> タグを使用します (どちらの pom でも)。

そのスレッド は、あなたの特定のエラーメッセージの詳細を追加します。

<ブロッククオート <ブロッククオート

Eclipse-UIのプロジェクトプロパティの「Maven」-> 「Lifecyle Mapping」を見てみると(「ライフサイクルフェーズの表示」チェックボックスをオンにし、「無視した実行の表示」を無効にした)、以下の内容が表示されるのですが、これは何ですか?
私の理解では、このファイルはEclipseビルドライフサイクル(ランタイム/インクリメンタル)とそのバインドされたMavenプラグイン間のマッピングを示しています。
現在のところ、このファイルには" jax-ws " プラグインはそれぞれその目標である " wsimport ".

を持っていることが問題なのです。 jax-ws プラグインの宣言は pluginManagement セクションを作成します。
フェーズへのバインディングを取得するには、build/pluginsにある必要があります。
CLIからMavenのビルドを実行してもうまくいかないので、標準の "mvn install" をしていないのではないでしょうか?

Eclispe 内からの Maven 実行を動作させるためには、何もする必要がありません。
しかし、IDE でインクリメンタル/ランタイムサポートを行いたい場合は、適切な m2e コネクタを取得する必要があります。EclipseのPOMエディターでpomを見ると、プラグイン実行が赤いエラーXでマークされているはずです。その上にマウスを置くと、1つを見つけるためのオプション("新しいm2eコネクタを発見する")が表示されるはずです。