web-dev-qa-db-fra.com

Mappe de cycle de vie m2e introuvable

J'essaie d'utiliser la solution décrite ici pour résoudre le problème "Exécution de plug-in non couverte par la configuration de cycle de vie: org.codehaus.mojo: build-helper-maven-plugin: 1.7: add-source (exécution : default, phase: generate-sources) "quand je place le plugin suivant sur mon pom.xml:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
    <execution>
        <phase>generate-sources</phase>
        <goals><goal>add-source</goal></goals>
        <configuration>
            <sources>
                <source>src/bootstrap/Java</source>
            </sources>
        </configuration>
    </execution>
</executions>
</plugin>

Mais quand je lance mvn clean install j'obtiens ceci:

Raison: POM 'org.Eclipse.m2e: lifecycle-mapping' introuvable dans le référentiel: impossible de télécharger l'artefact à partir d'un référentiel

Quelqu'un at-il une idée sur la façon de rendre M2E et Maven heureux?

56
TraderJoeChicago

Le org.Eclipse.m2e:lifecycle-mapping le plugin n'existe pas réellement. Il devrait être utilisé à partir du <build><pluginManagement> section de votre pom.xml. De cette façon, Maven ne résout pas le problème, mais M2E peut le lire.

Cependant, une solution plus pratique à votre problème consisterait à installer le connecteur m2e build-helper dans Eclipse. Vous pouvez l'installer à partir de Window> Preferences> Maven> Discovery> Open Catalog. De cette façon build-helper-maven-plugin:add-sources serait appelé dans Eclipse sans vous demander de changer votre pom.xml.

110
Fred Bricon

Essayez d'utiliser le build/pluginManagement section, par exemple :

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.Eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>1.0.0</version>
            <configuration>
                <lifecycleMappingMetadata>
                    <pluginExecutions>
                        <pluginExecution>
                            <pluginExecutionFilter>
                                <groupId>org.bsc.maven</groupId>
                                <artifactId>maven-processor-plugin</artifactId>
                                <versionRange>[2.0.2,)</versionRange>
                                <goals>
                                    <goal>process</goal>
                                </goals>
                            </pluginExecutionFilter>
                            <action>
                                <execute />
                            </action>
                        </pluginExecution>
                    </pluginExecutions>                         
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

Voici un exemple pour générer un manifeste de paquet lors de la compilation incrémentielle dans Eclipse:

<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.Apache.felix</groupId>
                                    <artifactId>maven-bundle-plugin</artifactId>
                                    <versionRange>[1.0.0,)</versionRange>
                                    <goals>
                                        <goal>manifest</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.Apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.3.7</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                </instructions>
            </configuration>
            <executions>
                <execution>
                    <id>manifest</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>manifest</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

versionRange est requis, si omis, M2E (à partir de la version 1.1.0) lève une exception NullPointerException.

11
Hendy Irawan

Vous pouvez utiliser ce plugin factice:

mvn archetype:generate -DgroupId=org.Eclipse.m2e -DartifactId=lifecycle-mapping -Dversion=1.0.0 -DarchetypeArtifactId=maven-archetype-mojo

Après avoir généré le projet, installez-le/déployez-le.

9
Manfred Hantschel

Voici comment je le fais: je mets le plug-in de cycle de vie de M2E dans un profil séparé au lieu de la section <build> par défaut. le profil est activé automatiquement lors de la génération Eclipse par la présence d'une propriété m2e (au lieu d'une activation manuelle dans settings.xml ou autre). cela va gérer les cas m2e, tandis que maven en ligne de commande va tout simplement ignorer le profil et le plugin m2e lifecycle-mapping sans aucun avertissement, et tout le monde est content.

<project>
  ...
  <profiles>
    ...
    <profile>
      <id>m2e</id>
      <!-- This profile is only active when the property "m2e.version"
        is set, which is the case when building in Eclipse with m2e. -->
      <activation>
        <property>
          <name>m2e.version</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.Eclipse.m2e</groupId>
              <artifactId>lifecycle-mapping</artifactId>
              <version>1.0.0</version>
              <configuration>
                <lifecycleMappingMetadata>
                  <pluginExecutions>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>...</groupId>
                        <artifactId>...</artifactId>
                        <versionRange>[0,)</versionRange>
                        <goals>
                          <goal>...</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>

                        <!-- either <ignore> XOR <execute>,
                          you must remove the other one. -->

                        <!-- execute: tells m2e to run the execution just like command-line maven.
                          from m2e's point of view, this is not recommended, because it is not
                          deterministic and may make your Eclipse unresponsive or behave strangely. -->
                        <execute>
                          <!-- runOnIncremental: tells m2e to run the plugin-execution
                            on each auto-build (true) or only on full-build (false). -->
                          <runOnIncremental>false</runOnIncremental>
                        </execute>

                        <!-- ignore: tells m2Eclipse to skip the execution. -->
                        <ignore />

                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    ...
  </profiles>
  ...
</project>
6
Robin479

J'ai ouvert un bug (trivial) pour cela chez m2e. Votez pour cela si vous voulez que le message d'avertissement disparaisse définitivement ...

https://bugs.Eclipse.org/bugs/show_bug.cgi?id=36787

3
Ben

J'avais le même problème, où:

Aucune entrée de marché trouvée pour gérer build-helper-maven-plugin: 1.8: add-source dans Eclipse. Veuillez consulter l'aide pour plus d'informations.

et en cliquant sur le bouton Fenêtre> Préférences> Maven> Découverte> Ouvrir le catalogue, vous ne signalez aucune connexion.

La mise à jour de 7u40 à 7u45 sur Centos 6.4 et OSX résout le problème.

3
user145880

Maven tente de télécharger l'artefact de mappage du cycle de vie de m2e, que M2E utilise pour déterminer comment traiter les plug-ins dans Eclipse (ajout de dossiers sources, etc.). Pour une raison quelconque, cet artefact ne peut pas être téléchargé. Avez-vous une connexion internet? D'autres artefacts peuvent-ils être téléchargés à partir de référentiels? Paramètres du proxy?

Pour plus de détails sur Maven, essayez d'activer la sortie de débogage de M2E (case à cocher Paramètres/Maven/Sortie de débogage). Elle vous indiquera peut-être plus en détail pourquoi il est impossible de télécharger à partir du référentiel.

1
prunge

m2e 1.7 introduit une nouvelle syntaxe pour les métadonnées de mappage de cycle de vie qui ne provoque plus cet avertissement:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
    <execution>

        <!-- This executes the goal in Eclipse on project import.
             Other options like are available, eg ignore.  -->
        <?m2e execute?>

        <phase>generate-sources</phase>
        <goals><goal>add-source</goal></goals>
        <configuration>
            <sources>
                <source>src/bootstrap/Java</source>
            </sources>
        </configuration>
    </execution>
</executions>
</plugin>
1

Cela se produit en raison d'une configuration de plugin manquante (comme commentaire de démo de vaadin commentaire):

La configuration de ce plugin est utilisée pour stocker uniquement les paramètres Eclipse m2e. Cela n'a aucune influence sur la construction Maven elle-même.

<pluginManagement>
    <plugins>
        <!--This plugin's configuration is used to store Eclipse m2e ettings 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>com.vaadin</groupId>
                                <artifactId>
                                    vaadin-maven-plugin
                                </artifactId>
                                <versionRange>
                                    [7.1.5,)
                                </versionRange>
                                <goals>
                                    <goal>resources</goal>
                                    <goal>update-widgetset</goal>
                                    <goal>compile</goal>
                                    <goal>update-theme</goal>
                                    <goal>compile-theme</goal>
                                </goals>
                            </pluginExecutionFilter>
                            <action>
                                <ignore></ignore>
                            </action>
                        </pluginExecution>
                    </pluginExecutions>
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>
0
falsarella