2017年2月17日金曜日

jbpm-console Eclipse: Plugin execution not covered by lifecycle configuration: org.kie:kie-maven-plugin:6.5.0.Final:build

現象:

jbpm-console Eclipse: Plugin execution not covered by lifecycle configuration: org.kie:kie-maven-plugin:6.5.0.Final:build (execution: default-build, phase: compile)


または、


maven-enforcer-plugin (goal "enforce") is ignored by m2e とか。

問題点:

"Plugin execution not covered by lifecycle configuration:"

私の理解で図解してみました。参照もとのページはこちら

こちらのページの情報によりますと
「“interesting” phases に連結している全 Maven plugins の処遇について明確な指示が必要」
→「つまり “interesting” phases に連結している全 Maven plugins を暗黙的にブロックする」とあります。
To solve these long-standing issues, M2Eclipse 1.0 requires explicit instructions what to do with all Maven plugins bound to “interesting” phases (see [M2E interesting lifecycle phases](M2E interesting lifecycle phases “wikilink”)) of a project build lifecycle. 
具体的に “interesting” phases の内訳ですが、こちらからは参照できなくなっています。
そこで、ソースコードを確認します。
  private static final String[] INTERESTING_PHASES = {"validate", //
      "initialize", //
      "generate-sources", //
      "process-sources", //
      "generate-resources", //
      "process-resources", //
      "compile", //
      "process-classes", //
      "generate-test-sources", //
      "process-test-sources", //
      "generate-test-resources", //
      "process-test-resources", //
      "test-compile", //
      "process-test-classes", //
compile フェイズは該当しますので、対策が必要です。実行する必要がなければ、そのままにします。

対策:

(1) そもそもなにをするプラグインなのかを調べます。ビルドには不要→無視。ビルドに必要なもの→自動実行 or 手動実行の判断

  • プラグインのホームページを検索して調べる。
  • ソースコードを調べる。「kie-maven-plugin github」などで検索

このプラグインのホームページはなさそうでしたので、github.com で kie-maven-plugin のソースコードを探してきて流し読みしました。

最後がつぎのようになっていました。
getLog().info("KieModule successfully built!");
jbpm-console はプロジェクトのデプロイ時にプロジェクトを maven ビルドします。

このプラグインは事前にそのビルドができるかどうかを開発環境で検証するためのプラグインであり、ビルド作業には直接関与しない、ということが読み取れました。

実行しなくても問題はないので、無視する(実行しない)こともできます。

(2) M2E Connector を入手する

Ctrl + 3 の Quick Access で m2e Marketplace を検索実行し Install m2e connectors で探します。


あればいいんですが、マイナーなものはないかもしれません。その場合は (3) を。

(3) pluginExecution を作成し、自動ビルドシステムの対象にします

しかるべき所に <execute></execute> を追加します。例:

 <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.kie</groupId>
          <artifactId>
           kie-maven-plugin
          </artifactId>
          <versionRange>
           [6.5.0.Final,)
          </versionRange>
          <goals>
           <goal>build</goal>
          </goals>
         </pluginExecutionFilter>
         <action>
          <execute>
           <runOnIncremental>false</runOnIncremental>
           <runOnConfiguration>false</runOnConfiguration>
          </execute>
         </action>
        </pluginExecution>
       </pluginExecutions>
      </lifecycleMappingMetadata>
     </configuration>
    </plugin>
   </plugins>
  </pluginManagement>
 </build>

Alt + F5 で、Update Maven Project を実施します。

runOnIncremental と runOnConfiguration につきましてはだいたいご想像の通りと思います。

ソースコードより
  public boolean appliesToBuildKind(int kind) {
    if(PRECONFIGURE_BUILD == kind) {
      return runOnConfiguration;
    }
    if(INCREMENTAL_BUILD == kind || AUTO_BUILD == kind) {
      return runOnIncremental;
    }
    if(FULL_BUILD == kind || CLEAN_BUILD == kind) {
      return true;
    }
    return false;
  }
おそらく、./configure のような働きをするものは <runOnConfiguration>true</runOnConfiguration> を、

インクリメンタルビルドや自動ビルドに含めてよいものは <runOnIncremental>true</runOnIncremental> を指定するのだと思います。

(4) Eclipse の Run Configurations で実行したい

手動で実行するようにできます。おおよそ次のように設定します:


(5) コマンドラインから実行

mvn org.kie:kie-maven-plugin:6.5.0.Final:build
mvn org.kie:kie-maven-plugin:6.5.0.Final:build -DskipTests

など。

0 件のコメント:

コメントを投稿