【问题标题】:Error in maven pom xml file: Building Android project [duplicate]maven pom xml文件中的错误:构建Android项目[重复]
【发布时间】:2014-01-27 18:24:44
【问题描述】:

我在 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>

【问题讨论】:

标签: java android xml maven


【解决方案1】:

为了消除 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>
       . . . 

【讨论】:

【解决方案2】:

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

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

您可以获取更多信息here

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

【讨论】:

  • 嗨 gow​​tham,你能告诉我如何忽略这个错误吗?
  • @AmritPalSingh 在某种意义上忽略,留下那个错误,不要做任何事情,它会在 pom.xml 中显示错误标记(红色标记),但不会影响您的项目执行。 :)
  • 但是如果我忽略它给您的项目包含错误的错误,请在运行您的应用程序之前修复它们
  • @AmritPalSingh - 是的,但他们不会停止您的项目执行。如果您不希望出现错误,可以浏览问题下方 cmets 中提供的链接
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

    要解决这个问题,我们必须在 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>
    

    以及“Windows”中的“lifecycle-mapping-metadata.xml”文件中的以下标记>最好是maven>生命周期映射>“打开工作区生命周期映射元数据”eclipse菜单

    <?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 提供的答案

    【讨论】:

    • 抱歉,Stack Overflow 是一个英文网站。
    【解决方案5】:

    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 -> Ignore for every pom with such errors

    【讨论】:

      猜你喜欢
      • 2011-05-09
      • 2016-06-06
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      相关资源
      最近更新 更多