Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plugin execution not covered by lifecycle configuration error in Eclipse Juno

Tags:

maven

maven-3

Why does my Maven build work perfectly fine on the command line but when I run in Eclipse, it requires I add this section to my pom.xml, otherwise I get this error:

Plugin execution not covered by lifecycle configuration
: org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile
 (execution: default-testCompile, phase: test-compile)

Isn't it strange that this occurs around the 'maven-compiler-plugin' plugin?? I cannot find another question like this anywhere on google, although I find many fix suggestions around 3rd party plugins. I've done a great deal of researching and searching and found no explanation of this, not even from here.

And the pom.xml required to fix this:

<!--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.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <versionRange>[3.1,)</versionRange>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </pluginExecutionFilter>
                    <action> 
                        <ignore></ignore>
                    </action>
                </pluginExecution>
            </pluginExecutions>
        </lifecycleMappingMetadata>
    </configuration>
</plugin>

And , here is my simple project on GitHub if you want to see my source.

like image 892
djangofan Avatar asked Apr 10 '13 23:04

djangofan


3 Answers

I finally solved it. It appears that the "pluginManagement" section I posted above is required by an Eclipse Maven project in general, even though I resisted it, and even though no documentation that I can find on the internet ever mentions this explicitly.

ALso, the "versionRange" in the lifecycle exclusion section seems to also require the version number of the "gmaven-plugin" rather than the "version of Maven" which I was trying to give it above.

<pluginExecutionFilter>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <versionRange>[1.5,)</versionRange>
    <goals>
        <goal>testCompile</goal>
        <goal>compile</goal>
    </goals>
</pluginExecutionFilter>
like image 114
djangofan Avatar answered Oct 24 '22 23:10

djangofan


You may require an M2E "connector" to understand maven-compiler-plugin using the Eclipse (JDT) compiler.

Select "discover connectors" and choose M2E connector for Eclipse JDT compiler provided by JBoss, or install it manually.

M2E connector for the Eclipse JDT Compiler 1.0.1.201209200903

You may also be offered a Groovy connector -- maybe it uses similar technology under the hood? -- but unless you are using Groovy, it probably does not make sense to install such integration.

like image 2
Thomas W Avatar answered Oct 25 '22 00:10

Thomas W


  1. Help -> Install new Software

    • Install the Groovy Compiler 2.2 / 2.1 Feature

    • Install Groovy-Eclipse M2E integration

  2. Window -> Preferences -> Maven -> Lifecycle Mappings -> Open workspace lifecycle mappings metadata

Add the following xml:

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>
        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.gmaven</groupId>
                <artifactId>gmaven-plugin</artifactId>
                <versionRange>[1.3,)</versionRange>
                <goals>
                    <goal>compile</goal>
                    <goal>testCompile</goal>
                </goals>
            </pluginExecutionFilter>
            <action>
                <execute />
            </action>
        </pluginExecution>
    </pluginExecutions>
</lifecycleMappingMetadata>
  1. Reload the Lifecycle Mappings and invoke a projekt update on your maven project. (ALT+F5)
like image 2
Jotschi Avatar answered Oct 25 '22 00:10

Jotschi