web-dev-qa-db-ja.com

Eclipse m2eプラグインでカバーされていないMavenライフサイクルフェーズをマッピングするにはどうすればよいですか?

Mac 10.9.5でEclipse Keplerを使用しています。 m2e Eclipseプラグインを使用していくつかのMavenプロジェクトをインポートしました。これらのプロジェクトはすべて親pomの子です。個々の子pom.xmlファイルの「概要」を見ると、次のようなものが表示されます。

Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-2:write-project-properties (execution: default, phase: process-resources)

Eclipseにこれらのライフサイクルフェーズを適切なタイミングで実行してもらいたいのですが、その方法がわかりません。 Eclipseの提案を選択すると…

Permanently mark goal write-project-properties in pom.xml as ignore

「場所を選択して無視する」というプロンプトが表示されたときに親pom.xmlファイルを選択しましたが、Eclipseエディターで子pom.xmlファイルを表示してもエラーは消えません。 m2eでカバーされていないライフサイクルフェーズをマッピングするにはどうすればよいですか?

編集:

答えに従って、私はEclipse-> Preferences-> Maven-> Lifecycle Mappingsに行き、「Open Workspace Lifecycle Mappings Metadata」をクリックして、提案されたようにファイルを編集しました...

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>xmlbeans-maven-plugin</artifactId>
                <versionRange>2.3.3</versionRange>
                <goals>
                    <goal>xmlbeans</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>
        <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>
                <execute />
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>

Eclipseを再起動した後でも、子pom.xmlファイルを開くと、「プラグインの実行がライフサイクル構成でカバーされていません」というエラーが以前のままです。

11
Dave

M2Eclipse(EclipseのMaven統合プラグイン)は、Mavenのデフォルトのphasesおよびgoalsを内部Eclipseビルドワークフローにマッピングして実行します。

参照: https://www.Eclipse.org/m2e/documentation/m2e-execution-not-covered.html

[...]プロジェクトビルドライフサイクルの「興味深い」フェーズにバインドされたすべてのMavenプラグインをどうするかを明示的に指示する必要があります[...]。これらの手順を「プロジェクトビルドライフサイクルマッピング」または単に「ライフサイクルマッピング」と呼びます。m2eが情報をプロジェクトpom.xmlファイルからEclipseワークスペースプロジェクトの構成とEclipseワークスペースビルド中の動作にマッピングする方法を定義するためです。

すべてのプロジェクトまたはグローバルEclipseインストールでこのエラーを解決することができます。

プロジェクトのビルドライフサイクルマッピングは、プロジェクトのpom.xmlで構成するか、Eclipseプラグインによって提供されるか、またはデフォルトでm2eに付属する一般的に使用されるMavenプラグインに設定できます。これらを「ライフサイクルマッピングメタデータソース」と呼びます。

グローバルEclipse設定ファイルはlifecycle-mapping-metadata.xmlと呼ばれ、[Maven設定]ダイアログの[ライフサイクルマッピング]を介して設定できます[1]。

M2Eclipseは、プラグインのgroupId、artifactId、バージョン範囲、および目標の組み合わせを使用して、プラグインの実行をアクションに一致させます。プラグインの実行でM2Eclipseに指示できる基本的なアクションは3つあります–ignoreexecuteとプロジェクトコンフィギュレーターに委任します。

[...]

ignoreオプションは、その名前が示すように、プラグインの実行を静かに無視するようにM2Eclipseに指示します。

[...]

executeオプションは、m2eに、Eclipseワークスペースのフルビルドまたはインクリメンタルビルドの一部としてアクションを実行するように指示します。

プロジェクトコンフィギュレーターへの委任は、EclipseマーケットプレイスにアダプターEclipseプラグインがあることを意味します。アダプタープラグインは、phasesおよびgoalsをよりMavenプラグイン固有の方法で実行します。

実際の設定(XML構造)は直感的ではありませんが、上記のリンクで少し説明しています。

あなたの場合、lifecycle-mapping-metadata.xmlは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
  <pluginExecutions>
[...]
    <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>
[...]
  </pluginExecutions>
</lifecycleMappingMetadata>

ProTip:より多くのプロジェクトがあり、Mavenプラグインのセットを常に使用していましたか?SCM(git、svn、cvs ...)でlifecycle-mapping-metadata.xmlを移動します。

[〜#〜]編集[〜#〜]

これらのエラーを回避するために、プラグインのallゴールと、おそらく追加のプラグインを追加します。追加のgoalsまたはプラグインについては、エラーメッセージをよく読んでください。

lifecycle-mapping-metadata.xmlの変更を保存した後、Maven設定ダイアログ[1]のコンテンツを再ロードし、ワークスペース内のすべてのMavenベースのプロジェクトを更新する必要があります。

ワークスペースのMavenプロジェクトでマウスの右ボタンをクリックし、Maven>プロジェクトの更新...を選択します。 /すべてのMavenプロジェクトを選択し、次のチェックボックスをアクティブにします。

  • Pom.xmlからプロジェクト構成を更新する
  • ローカルファイルシステムからワークスペースリソースを更新する
  • きれいなプロジェクト

[〜#〜]編集[〜#〜]

[1] Maven設定ダイアログはFile> Window> Preferences> Maven> Lifecycle MappingsExclipse Oxygenまでありました。

12
barthel