m2eでプロジェクトインポートすると出るエラー "Plugin execution not covered by lifecycle configuration"


標準には存在しないm2eにとっては未知のgoalを持ったプラグインを定義しているとエラーとなる。
解決するには二通りの方法がある。

1. 手っ取り早い方法

MaveのErrors/Warnignsの設定でignoreにしてしまう。

2. めんどくさいけど個別にエラー/正常を分ける方法

MavenのLifecycle Mappingsに割り当てられている定義ファイルに記述すれば良い。といってもデフォルトでは存在しないファイルでしかも開いているワークスペースのメタデータ内のパスになっている。わかりやすい場所に変えておいた方が良いと思う。

何にせよ [Open workspace lifecycle mappings metadata] で新規のXMLファイルが開くので、以下のように記述をする。

lifecycle-mapping-metadata.xml
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <goals>
                    <goal>unpack-dependencies</goal>
                </goals>
                <versionRange>[0.0,)</versionRange>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>

この例ではdependency-pluginのunpack-dependenciesを無視する定義としている。
ignore以外ではm2eにプロジェクトをインクリメンタルビルドさせるexecutionも書けるらしいが使う良い例が浮かばなかったので割愛する。

マッピングファイルを更新したら、[Reload workspace lifecycle mappings metadata]で読み込みを実行しておく。

おわったらやること

いずれの方法も対応してすぐには反映されない。エラーの出ているプロジェクトを選択してコンテキストメニューを出し、[Update Project...]を行う必要がある。

参照