Maven报Plugin execution not covered by lifecycle configuration


lifecycle mapping: 定义插件生命周期中必须要做的操作。
对于没有lifecycle mapping文件的工程,会报如下错误:
Plugin execution not covered by lifecycle configuration:
org.apache.maven.plugins:maven-antrun-plugin:1.3:run
    (execution: generate-sources-input, phase: generate-sources)
可采用如下三种方法修复
1. Delegate to a project Configurator(推荐的方式 )

2. 使用ignore目标
目的:忽略对此插件的检查
方法:修改pom.xml,使用pluginManagement对插件进行管理。注意,对于自定义的插件,还需要在下面进行定义。因为maven 插件运行时,是找<plugins>标签下的<plugin>运行,pluginManagement标签只是提供对插件的管理。
<pluginManagement>
  <plugins>
    <plugin>
     <groupId>org.eclipse.m2e</groupId>
     <artifactId>lifecycle-mapping</artifactId>
     <version>1.0.0</version>
     <configuration>
       <lifecycleMappingMetadata>
         <pluginExecutions>
           <pluginExecution>
             <pluginExecutionFilter>
               <groupId>some-group-id</groupId>
               <artifactId>some-artifact-id</artifactId>
               <versionRange>[1.0.0,)</versionRange>
               <goals>
                 <goal>some-goal</goal>
               </goals>
             </pluginExecutionFilter>
             <action>
               <ignore/>
             </action>
           </pluginExecution>
         </pluginExecutions>
       </lifecycleMappingMetadata>
     </configuration>
    </plugin>
  </plugins>
</pluginManagement>
有一个简单的修复试,就是直接用pluginManagement将问题插件包起来,结构如下:
<pluginManagement>
   <plugins>
       <plugin></plugin>    <!--问题插件 -->
       <plugin></plugin>
   </plugins>
</pluginManagement>

3. 使用execute目标
目的:强制执行该插件
方法如下:修改pom文件,方法类似于ignore,只不过目标换为execute。注意:对于 execute目标,M2Eclipse不提供安全检查,也就是说用户得自己承担执行该插件的结果。
<pluginManagement>
  <plugins>
    <plugin>
     <groupId>org.eclipse.m2e</groupId>
     <artifactId>lifecycle-mapping</artifactId>
     <version>1.0.0</version>
     <configuration>
       <lifecycleMappingMetadata>
         <pluginExecutions>
           <pluginExecution>
             <pluginExecutionFilter>
               <groupId>some-group-id</groupId>
               <artifactId>some-artifact-id</artifactId>
               <versionRange>[1.0.0,)</versionRange>
               <goals>
                 <goal>some-goal</goal>
               </goals>
             </pluginExecutionFilter>
             <action>
               <execute>
                 <runOnIncremental>false</runOnIncremental>
               </execute >
             </action>
           </pluginExecution>
         </pluginExecutions>
       </lifecycleMappingMetadata>
     </configuration>
    </plugin>
  </plugins>
</pluginManagement>
action红色部分可以直接写为<execute />。runOnIncremental增加构建,默认false就行。

遇到的问题: 希望能够自定义maven目录,不想把所有的源码放在src/main/java下,而是想自定义目录结构。
解决:maven编译默认是从src/main/java拿 源码,如果希望自定义目录结构,将自定义的目录也打入jar包中,需得在pom中增加 配置,可通过build-helper-maven-plugin插件来解决,如下:
<plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>

                    <version>1.7</version>
                    <executions>
                         <execution>
                          <id>add-source</id>
                              <phase>generate-sources</phase>
                              <goals>
                                   <goal>add-source</goal>
                              </goals>

                         </execution>
                    </executions>
                    <configuration>
                         <sources>
                              <!-- 我们可以通过在这里添加多个source节点,来添加任意多个源文件夹 -->
                              <source>src/util</source>
                              <source>src/persist</source>
                              <source>src/base</source>
                              <source>src/brms</source>
                              <!-- <source>test/main</source> -->

                         </sources>
                    </configuration>
   </plugin>

对pom进行修改后,遇到问题: plugin not cover........
解决:按照ignore方法进行修改,错误解决
但是,由于自定义了打包插件,但是,通过工程右键-- >maven -->lifecycle mapping看到自定义的打包插件被ignore掉了,如下:
工程希望一定要执行bussinesspackageplugin 这个插件,生成特定目录结构,但是m2e ignore掉了,导致结果不理想。
修改如下:1. 把build-helper-maven-plugin 这个插件的检查ignore掉,
               2. execute 自定义插件BusinessPackagePlugin
               3. 1.2操作通过pluginManagement标签进行管理
               
最后修改完的pom如下所示:
<build>
          <pluginManagement>
               <plugins>
                    <plugin>
                         <groupId>org.eclipse.m2e</groupId>
                         <artifactId>lifecycle-mapping</artifactId>
                         <version>1.0.0</version>
                         <configuration>
                              <lifecycleMappingMetadata>
                                   <pluginExecutions>
                                        <pluginExecution>
                                             <pluginExecutionFilter>
                                                  <groupId>org.codehaus.mojo</groupId>
                                                  <artifactId>build-helper-maven-plugin</artifactId>
                                                  <versionRange>[1.7,)</versionRange>
                                                  <goals>
                                                       <goal>add-source</goal>
                                                  </goals>
                                             </pluginExecutionFilter>
                                             <action>
                                                  <ignore />
                                             </action>

                                        </pluginExecution>
                                        <pluginExecution>
                                             <pluginExecutionFilter>
                                                  <groupId>com.test</groupId>
                                                             <artifactId>BusinessPackagePlugin</artifactId>

                                                  <versionRange>[1.2.1-SNAPSHOT,)</versionRange>
                                                  <goals>
                                                       <goal>packagee</goal>
                                                  </goals>
                                             </pluginExecutionFilter>
                                             <action>
                                                  <execute />
                                             </action>

                                        </pluginExecution>
                                   </pluginExecutions>
                              </lifecycleMappingMetadata>
                         </configuration>
                    </plugin>
               </plugins>
          </pluginManagement>
<!-- 以下对插件进行定义-->
          <plugins>
               <plugin>
                    <groupId>com.test</groupId>
                    <artifactId>BusinessPackagePlugin</artifactId>

                    <version>1.2.1-SNAPSHOT</version>
                    <executions>
                         <execution>
                              <phase>package</phase>
                              <goals>
                                   <goal>packagee</goal>
                              </goals>
                         </execution>
                    </executions>
                    <configuration>
                         <action>
                              <execute />
                         </action>
                    </configuration>
               </plugin>
               <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.0</version>
                    <configuration>
                         <source>1.6</source>
                         <target>1.6</target>
                         <maxmem>256M</maxmem>
                         <encoding>UTF-8</encoding>
                    </configuration>
               </plugin>

               <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.7</version>
                    <executions>
                         <execution>
                              <id>add-source</id>
                              <phase>generate-sources</phase>
                              <goals>
                                   <goal>add-source</goal>
                              </goals>
                         </execution>
                    </executions>
                    <configuration>
                         <sources>
                              <!-- 我们可以通过在这里添加多个source节点,来添加任意多个源文件夹 -->
                              <source>src/util</source>
                              <source>src/persist</source>
                              <source>src/base</source>
                              <source>src/brms</source>
                              <!-- <source>test/main</source> -->
                         </sources>
                    </configuration>

               </plugin>
          </plugins>
     </build>

做了如下修改后,打包正常。lifecycle Mapping如下所示:

附:
M2E 加载lifecycle Mapping文件顺序:
1. 工程的pom.xml文件
2. 父项目的pom.xml文件,或者父父项目的pom.xml文件,以上类推
3. window --> preferences --> maven里的配置
4. M2Eclipse 扩展点
5. maven 插件默认的
6. M2Eclipse默认的。
谁先找到用谁。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值