maven pom xml文件出错:构建Android项目

时间:2014-01-09 09:28:32

标签: java android xml maven

我在pom xml文件中的插件标记中收到错误。错误发生在groupId之前的插件标记上。

错误: -

Plugin execution not covered by lifecycle configuration:com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.8.2:consume-aar (execution: default-consume-aar, phase: compile)

任何人都知道如何解决此问题。下面提到的是pom.xml文件内容

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.simpligility.android</groupId>
  <artifactId>helloflashlight</artifactId>
  <version>1.0.0</version>
  <packaging>apk</packaging>

  <name>HelloFlashlight</name>

  <dependencies>
    <dependency>
      <groupId>com.google.android</groupId>
      <artifactId>android</artifactId>
      <version>4.1.1.4</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src</sourceDirectory>
    <finalName>${project.artifactId}</finalName>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.jayway.maven.plugins.android.generation2</groupId>
          <artifactId>android-maven-plugin</artifactId>
          <version>3.8.2</version>
          <extensions>true</extensions>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
        <artifactId>android-maven-plugin</artifactId>
        <configuration>
          <sdk>
                        <!-- platform as api level (api level 16 = platform 4.1)-->
            <platform>16</platform>
          </sdk>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

5 个答案:

答案 0 :(得分:5)

要使pom.xml中的错误无声,可以在其中添加以下内容:

    <pluginManagement>
     <plugins>
      <plugin>
       <groupId>org.eclipse.m2e</groupId>
        <artifactId>lifecycle-mapping</artifactId>
         <version>1.0.0</version>
       <configuration>
        <lifecycleMappingMetadata>
          <pluginExecutions>
           <pluginExecution>
            <pluginExecutionFilter>
              <groupId>com.jayway.maven.plugins.android.generation2</groupId>
             <artifactId>android-maven-plugin</artifactId>
             <versionRange>[1.0.0,)</versionRange>
              <goals>
               <goal>consume-aar</goal>
              </goals>
             </pluginExecutionFilter>
            <action>
             <ignore />
            </pluginExecution>
           </action>
           </pluginExecutions>
          </lifecycleMappingMetadata>
         </configuration>
       </plugin>
       . . . 

答案 1 :(得分:2)

这是因为新的m2eclipse插件,它是新引入的一个特性。

对于pom.xml中指定的所有构建执行,如果m2eclipse插件的lifecycle-mapping-metadata.xml文件中有相应的配置信息,则显示该错误。

您可以获得更多信息here

您可以忽略不会影响项目执行的错误。

答案 2 :(得分:1)

Eclipse M2E警告您,您的生命周期包含一个未知的插件。 M2E无法决定,它是否无关紧要,可以忽略,或者它是您生命周期中不可或缺的一部分。

此信息既可以作为pom.xml中的条目提供,也可以作为eclipse的特殊生命周期文件提供,也可以通过安装特定的配置插件来提供,这通常是最佳解决方案。

在你的情况下,android-maven-plugin存在一个configurator插件,请看一下:http://rgladwell.github.io/m2e-android/,这应该可以很好地解决你的问题。

答案 3 :(得分:1)

要解决这个问题,我们必须在pom.xml中添加以下所有元素:

<plugin>
    <groupId>org.eclipse.m2e</groupId>
    <artifactId>lifecycle-mapping</artifactId>
    <version>1.0.0</version>
</plugin>

这是最终的pom xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>testMyc</groupId>
    <artifactId>srgfrzfd</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>apk</packaging>
    <name>srgfrzfd</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <platform.version> 4.1.1.4
            </platform.version>
        <android.plugin.version>3.8.2</android.plugin.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.google.android</groupId>
            <artifactId>android</artifactId>
            <version>${platform.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}</finalName>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                    <artifactId>android-maven-plugin</artifactId>
                    <version>${android.plugin.version}</version>
                    <extensions>true</extensions>
                </plugin>
            </plugins>
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
            </plugin>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                <artifactId>android-maven-plugin</artifactId>
                <configuration>
                    <sdk>
                        <platform>16</platform>
                    </sdk>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

以及&#34; lifecycle-mapping-metadata.xml&#34;中的以下标记;文件位于&#34; Windows&#34; &GT;并且最好是maven>生命周期映射&gt; &#34;打开工作区生命周期映射元数据&#34;日食菜单

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                <artifactId>android-maven-plugin</artifactId>
                <versionRange>[1.0.0,)</versionRange>
                <goals>
                    <goal>consume-aar</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>

将文件保存在正在使用的工作区中。

答案由myc1986提供

答案 4 :(得分:1)

Maven Eclipse(m2e)版本0.12起,所有Maven生命周期目标必须映射到已安装的m2e扩展。在这种情况下,android-maven-plugin添加了新目标consume-aar以支持新的Android库存档格式。

Android for Maven Eclipse(m2e-android)插件还没有AAR支持(因为Google还没有向ADT添加AAR支持)所以这个目标是未映射的,这就是你收到此错误消息的原因

您只需按照此处的说明排除未映射的生命周期目标:

https://wiki.eclipse.org/M2E_plugin_execution_not_covered

或者,只需右键单击Eclipse中的错误消息并选择Quick Fix - &gt; Ignore for every pom with such errors