プラグインの実行がライフサイクル構成の対象外(JBossas 7 EARアーキタイプ)


123

私はEclipse 3.7 IndigoとMaven M2E Plugin 1.0.100を使用しています。

JBoss 7.x JavaEE 6 EARアーキタイプを使用すると、EARのpomでこのエラーが発生します。

プラグインの実行がライフサイクル構成でカバーされていません:org.apache.maven.plugins:maven-ear-plugin:2.6:generate-application-xml(実行:default-generate-application-xml、フェーズ:generate-resources)

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-ear-plugin</artifactId>
   <version>2.6</version>
   <configuration>
      <!-- Tell Maven we are using Java EE 6 -->
      <version>6</version>
      <!-- Use Java EE ear libraries as needed. Java EE ear libraries 
                  are in easy way to package any libraries needed in the ear, and automatically 
                  have any modules (EJB-JARs and WARs) use them -->
      <defaultLibBundleDir>lib</defaultLibBundleDir>
      <modules></modules>
   </configuration>
<plugin>

回答:


138

これは、少し前に導入されたM2Eプラグインの「機能」です。これは、JBoss EARプラグインとは直接関係ありませんが、他のほとんどのMavenプラグインでも発生します。

でプラグインの実行が定義されている場合pom(の実行などmaven-ear-plugin:generate-application-xml)、ビルドがEclipseで実行されたときにM2Eに何をすべきかを指示するM2Eの追加の構成情報も追加する必要があります。 M2E、それがインクリメンタルビルドでも行われる場合... ...その情報が欠落している場合、M2Eは次のエラーメッセージを表示して、そのことについて警告します。

「プラグインの実行はライフサイクル構成の対象外です」

詳細な説明と、エラーを解消するためにpomに追加する必要があるいくつかのサンプル構成については、ここを参照してください。

https://www.eclipse.org/m2e/documentation/m2e-execution-not-covered.html


70
@Janコンセプトがわかりません。M2Eはユーザーに対して透過的である必要があります。コマンドラインMavenと同じことを行いますが、Eclipse内から行います。M2Eに何をすべきかを指示するためにpom設定データに存在すべきではありません。もしそうなら、それは悪いデザインです。ところで、これらのエラーは、EclipseとM2Eの新しいバージョンではなくなることがあります。
2013

8
私は猛烈に同意します。私のPOMはm2eに依存していないので、たまたまIDEとしてEclipseを使用しているという理由だけで、POMを追加したいと思います。これは、IntelliJなどの別のIDEを使用している可能性のある、同じプロジェクトで作業している他者への詐欺です。m2eがこれらのヒントを必要とする場合、それはEclipse内のm2e構成の一部である必要があります。
ウィリアム

12
一部の目標は、Eclipseでは意味がありません。たとえば、ZIPファイルがtargetフォルダに解凍されるプロジェクトがあります。各ソースファイルを保存するときに、「段階的に」再実行する必要はありません。または多分あなたそれ欲しいです。実際、m2eは特定のビルドについて何も知りません。m2eがEclipse、POMで行うべきことを保存したり、ビルドステップを処理するためにm2eに知識を追加するm2eコネクタをインストールしたりできます。これらは、表示されるはずのオプションです。POMをm2e対応にしたくないとのことですが、すべての開発者向けに一元的に構成するのに最適な場所です。
Sander Verhagen、2013年

3
問題は、MavenやEclipseのほとんどのドキュメントと同様に、このドキュメントにリンクされていることです。アブカカダブラです。彼らがそれを明確に説明しようと努力しても、説明はあまりにも多くの概念に基づいており、私は比較的新しいMavenユーザーとして理解していないため、検索方法がわかりません-見つかったすべてに同じ問題があります。概念。テクノロジーが複雑すぎるか、ドキュメントの構成が不十分です。いずれの場合でも、学習曲線は高いです。ここでの答えは、非常に明確になります。
reinierpost 2014年

10
@RicardoGladwell反対票の目的を誤解しています。矢印は「この答えは役に立たない」と言っています-そしてそれはこの答えには当てはまりません。したがって、この答えが書かれている口調が嫌いなのに、反対票は要求されませんでした。
Dawood ibnカリーム2014

43

とにかく手遅れですが、私の解決策はEclipseでエラーメッセージを右クリックし、[Quick Fix] >> [Ignore for all pom for such errors]を選択するだけでした。


3
遅すぎることはありません。私はこの方法で問題を修正しました!
reinierpost 2014年

2
私も。このすべての調査と問題が何であるかを理解しようとすることは頭痛を与えたので、私はそれを無視しました:)ありがとう。
dleerob 2014年

1
これでうまくいきました。迅速な修正を受け入れた後に私が見た唯一の変更は私のポンの変更だったので、それはeclipse.org/m2e/documentation/m2e-execution-not-covered.htmlを指す@Janの回答で説明されている内容を自動的に生成すると思います。 xml。
Michael Osofsky 14

別のマシンで再試行しましたが、JBehave 3.9.4から3.9.5にアップグレードすると、問題が解消されました。これは、JBehaveプラグインでした。私の場合、エラーが発生していました(JBehave Mavenアーキタイプからプラグイン構成を生成しました(jbehave.org/reference/stable/archetypes.html))
マイケル・Osofsky

30

Eclipseにはインクリメンタルビルドの概念があります。これは多くの時間を節約できるので非常に便利です。

これはどのように便利ですか

単一の.javaファイルを変更したとしましょう。インクリメンタルビルダーは、すべてを再コンパイルすることなくコードをコンパイルできます(これには時間がかかります)。

今Mavenプラグインの問題は何ですか

Mavenプラグインのほとんどはインクリメンタルビルド用に設計されていないため、m2eで問題が発生します。m2eは、プラグインの目標が重要なものであるか、それとも無関係であるかを知りません。単一のファイルが変更されたときにすべてのプラグインを実行するだけでは、かなりの時間がかかります。

これが、m2eが実行の処理方法を理解するためにメタデータ情報に依存している理由です。m2eはこのメタデータ情報を提供するためのさまざまなオプションを考え出し、優先順位は以下のとおりです(最高から最低)。

  1. プロジェクトのpom.xmlファイル
  2. 親、祖父母などのpom.xmlファイル
  3. [m2e 1.2+]ワークスペース設定
  4. インストールされたm2e拡張機能
  5. [m2e 1.1+] mavenプラグインによって提供されるライフサイクルマッピングメタデータ
  6. m2eに付属するデフォルトのライフサイクルマッピングメタデータ

1,2は、pomファイルまたはその親のいずれかのタグでpluginManagementセクションを指定することを指します。M2Eはこの構成を読み取ってプロジェクトを構成します。以下のスニペットは、m2eにyuicompressor-maven-pluginの目標jslintcompress目標を無視するように指示します

<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>net.alchim31.maven</groupId>
                                    <artifactId>yuicompressor-maven-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>compress</goal>
                                        <goal>jslint</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

3)このメタデータでpomファイルを汚染したくない場合は、これを外部XMLファイルに保存できます(オプション3)。以下は、m2eにyuicompressor-maven-pluginの目的jslintcompress目標を無視するように指示するサンプルマッピングファイルです。

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>yuicompressor-maven-plugin</artifactId>
                <versionRange>[1.0,)</versionRange>
                <goals>
                    <goal>compress</goal>
                    <goal>jslint</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <ignore/>
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>

4)これら3つのオプションのいずれかが気に入らない場合は、Mavenプラグインにm2eコネクター(拡張)を使用できます。コネクターは、m2eにメタデータを提供します。このリンクで、コネクタ内のメタデータ情報の例を確認できます。メタデータがコンフィギュレーターを参照していることに気づいたかもしれません。これは単に、m2eが拡張機能の作成者から提供された特定のJavaクラスに責任を委任することを意味します。コンフィギュレータ内で適切に管理されていないため、プロジェクトが無限にビルドされる可能性があります)

configuratior(の例についてはこれらのリンクを参照してくださいリンク1リンク2)。したがって、プラグインが外部コネクタを介して管理できるものである場合は、インストールできます。m2eは、他の開発者によって提供されたそのようなコネクターのリストを保持しています。これは、ディスカバリー・カタログと呼ばれています。m2eは、オプション(1〜6)のいずれかを介して実行するライフサイクルマッピングメタデータがまだなく、検出カタログに実行を管理できる拡張機能がある場合、コネクタをインストールするように求めます。

以下の画像は、m2eがbuild-helper-maven-pluginのコネクターをインストールするように求める方法を示しています。 検出カタログから提案されたコネクタをインストールする

5)のM2eは、Mavenの-プラグインitself.Thisは、ユーザーが任意の追加のライフサイクルのマッピングを使用する必要はありませんかconnectors.Someプラグイン作成者がいることを意味する内インクリメンタルビルドと供給のライフサイクルのマッピングをサポートするためのプラグインの作成者を奨励すでにこれを実装します

6)デフォルトでは、m2eは、maven-compiler-pluginなどの一般的に使用されるほとんどのプラグインのライフサイクルマッピングメタデータを保持します。

ここで質問に戻ります。おそらく、問題を引き起こしている特定の目標に対して、1、2、または3で無視ライフサイクルマッピングを提供できます。


14

プロジェクトが誤検出エラーマーカーを継承せずにm2eをより適切に構成できることを思い出させるための適切な回避策は、これらのエラーを警告にダウングレードすることです。

ウィンドウ->設定-> Maven->エラー/警告->プラグインの実行がライフサイクル構成の対象外=警告


12

クリーンアップ、つまりポストクリーンの直後に特定のプラグインを実行しようとしました(デフォルトはクリーンフェーズです)。これは日食インディゴで私にとってはうまくいきました。ポストクリーンを追加するだけで問題は解決しました。

<executions>
  <execution>
    <configuration>
    </configuration>
   <phase>post-clean</phase>
    <goals>
      <goal>update-widgetset</goal>
    </goals>
  </execution>
</executions> 

11
それが機能する理由を説明ていただけますか?「追加したばかり」と「解決済み」では、不要な隠された動作がないという私の信頼は本当に高まりません。
キサキ

案の定、私が持っているphasegoalのためにexecution私に与えられたのpom.xmlに、と私はまだエラーを取得します。
reinierpost 2014年

紳士-すみません。私はMavenの専門家ではありません。迅速な解決策を模索するsome1を助けたいと思っていました。私はもっ​​と洞察力を与える必要があります。ここでの秘訣は、実行フェーズを含めることです。mojoは実行のフェーズで定義できるため、クリーンアップ後、つまりポストクリーン(デフォルトはクリーンフェーズ)の直後に特定のプラグインを実行しようとしました。これは日食インディゴで私にとってはうまくいきました。おそらく特定のプラグインがメインpomからのいくつかの依存関係を使用した可能性がありますか?IIRCこれはVaadinベースのプラグインでした。
Charith De Silva 2014

2

私は、Eclipse Kepler 4.3のmaven-antrun-pluginとjaxb2-maven-pluginで同じ問題を解決することができました。このソリューションを使用 することで、http ://wiki.eclipse.org/M2E_plugin_execution_not_covered#Eclipse_4.2_add_default_mapping
つまり、私の%のコンテンツelipse_workspace_name%/。metadata / .plugins / org.eclipse.m2e.core / lifecycle-mapping-metadata.xmlは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
  <pluginExecutions>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <versionRange>1.3</versionRange>
        <goals>
          <goal>run</goal>
        </goals>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
    <pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxb2-maven-plugin</artifactId>
        <versionRange>1.2</versionRange>
        <goals>
          <goal>xjc</goal>
        </goals>
      </pluginExecutionFilter>
      <action>
        <ignore />
      </action>
    </pluginExecution>
  </pluginExecutions>
</lifecycleMappingMetadata>

*エラーが表示されないようにするには、Eclipseを再起動する必要がありました。


1

以下のようにMavenのEclipse(のM2e)バージョン0.12のすべてのMavenライフサイクルの目標は、インストールされたM2eの拡張子にマップする必要があります。この場合、にmaven-ear-pluginはマッピングされていない目標がありましたdefault-generate-application-xml

次の手順に従うだけで、マッピングされていないライフサイクル目標を除外できます。

https://wiki.eclipse.org/M2E_plugin_execution_not_covered

または、Eclipseでエラーメッセージを右クリックし、Quick Fix-> を選択しIgnore for every pom with such errorsます。

ライフサイクルの目標を無視するときは注意が必要です。通常、目標は何か有用なことを行います。Eclipseでそれらを無視するように構成すると、重要なビルド手順を見逃す可能性があります。マップされていないライフサイクル目標のために、Maven Eclipse EAR拡張にサポートを追加することも検討してください。


0

Janの回答で説明されているメカニズムを使用して、「generate-application-xml」という目標を無視するようにm2eプラグインに指示しました。これはエラーを取り除き、m2eがapplication.xmlを作成するので機能するようです。

したがって、基本的にはエラーにより、Mavenビルドがm2eプラグインの制御下でEclipse内で実行されるときに、application.xmlを生成するために担当するメカニズムを決定する必要がありました。そして、m2eが担当することにしました。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <version>6</version>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
            </configuration>
        </plugin>
    </plugins>
    <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.apache.maven.plugins</groupId>
                                    <artifactId>maven-ear-plugin</artifactId>
                                    <versionRange>[2.1,)</versionRange>
                                    <goals>
                                        <goal>generate-application-xml</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>**
        </plugins>
    </pluginManagement>
</build>

0

M2E_plugin_execution_not_coveredの内容を理解し、下記の手順に従う必要があり ます。

  • Eclipseプラグインフォルダーからorg.eclipse.m2e.lifecyclemapping.defaults jarを選択します
  • それを抽出し、すべてのpluginExecutionsを見つけることができるlifecycle-mapping-metadata.xmlを開きます。
  • タグの<ignore/>下にエラーとして表示されるプラグインのpluginExecutionsを追加し<action>ます。

例:write-project-propertiesエラーの場合<pluginExecutions>は、lifecycle-mapping-metadata.xmlファイルのセクションの下に次のスニペットを追加します。

 <pluginExecution>
    <pluginExecutionFilter>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>properties-maven-plugin</artifactId>
       <versionRange>1.0-alpha-2</versionRange>
       <goals>
         <goal>write-project-properties</goal>
       </goals>
    </pluginExecutionFilter>
     <action>
       <ignore />
     </action>
   </pluginExecution>
  • JAR内のXMLファイルを置き換えます
  • Eclipseのプラグインフォルダー内の更新されたJARを置き換える
  • Eclipseを再起動します

今後、どのプロジェクトでもエラーは発生しないはずです。


0

質問が古すぎますが、このエラーに関してはすべてチェック済みなので、うまくいった解決策を共有したいと思います。それは苦痛でした、私は2日間試してみました、そして最後に解決策は次のとおりでした:

M2eプラグインをEclipseで更新する

きれいにして、もう一度作ります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.