wake-up-neo.net

Wie kann man das "Maven-Enforcer-Plugin (Ziel" erzwingen ") von m2e ignorieren" von Eclipse ignorieren?

Ich konfiguriere ein Eltern-Kind-Maven-Projekt mit mehreren Modulen mit Maven und Eclipse m2e. Ich verwende die neuesten Daten von Eclipse Juno SR1, die m2e 1.2.0 ist 

das übergeordnete Pom verwendet das Enforcer-Plugin, sodass das übergeordnete pom.xml in seinem Plugin-Abschnitt Folgendes enthält 

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>1.1.1</version>
    <executions>

        <!-- Enforce that all versions of a transative dependency must converge. -->
        <execution>
            <id>enforce</id>
            <configuration>
                <rules>
                    <DependencyConvergence />
                </rules>
            </configuration>
            <goals>
                <goal>enforce</goal>
            </goals>
        </execution>

        <!-- Black list certain jars -->
        <execution>
            <id>enforce-banned-dependencies</id>
            <goals>
                <goal>enforce</goal>
            </goals>
            <configuration>
                <rules>
                    <bannedDependencies>
                        <excludes>
                            <exclude>
                                commons-logging:commons-logging
                            </exclude>
                        </excludes>
                    </bannedDependencies>
                </rules>
                <fail>true</fail>
            </configuration>
        </execution>

    </executions>
</plugin>

Jedes der untergeordneten Projekte hat eine Fehlermeldung mit der Aufschrift maven-enforcer-plugin (goal "enforce") is ignored by m2e.

  • Was bedeutet diese Nachricht? 
  • Wie konfiguriere ich Dinge, um diese Nachricht loszuwerden? 
  • muss ich die Eclipse-Projekteinstellungen oder die pom.xml-Einstellungen konfigurieren?
44
ams

Das Eclipse-Maven-Plugin führt eine Projektdatei pom.xml aus, um herauszufinden, wie das Maven-Projekt konfiguriert ist, und übersetzt die Konfiguration von maven pom.xml in eine Eclipse-Konfiguration. Ein pom.xml kann auf eine beliebige Anzahl von Maven-Plugins verweisen, und jedes dieser Plugins kann Speicherlecks verursachen oder Eclipse-schädliche Aktionen ausführen. Daher ignoriert das m2e Eclipse Plugin standardmäßig alle Maven Plugins, es sei denn, diese Maven Plugins verfügen über einen speziellen M2e Plugin-Anschluss, der m2e mitteilt, wie das Maven Plugin in Eclipse zu integrieren ist. Zusammenfassend verteidigt m2e den Eclipse-JVM-Prozess gegen ein fehlerhaftes Maven-Plugin, indem er sagt, dass für jedes Maven-Plugin ein M2e-Connector vorhanden sein muss, der zwischen Maven und Eclipse überbrückt.

Um die Warnung loszuwerden, fügte ich meinem Plugin-Verwaltungsabschnitt der übergeordneten Datei pom.xml Folgendes hinzu 

<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.maven.plugins</groupId>
                  <artifactId>maven-enforcer-plugin</artifactId>
                  <versionRange>[1.0.0,)</versionRange>
                  <goals>
                    <goal>enforce</goal>
                  </goals>
                </pluginExecutionFilter>
                <action>
                  <ignore />
                </action>
              </pluginExecution>
            </pluginExecutions>
          </lifecycleMappingMetadata>
        </configuration>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

Es scheint, dass org.Eclipse.m2e:lifecycle-mapping ein Maven-Plugin ist, das Metadaten für die Kommunikation mit Eclipse m2e Plugin enthält, wenn ein maven pom.xml verarbeitet wird, und diese Informationen werden verwendet, um Eclipse mitzuteilen, was mit Maven-Plugins zu tun ist, wenn Eclipse das ausführt pom.xml als Teil der Eclipse-Benutzeroberfläche.

55
ams

Ab m2e Version 1.4 und höher: Sie können die benötigte Lifecycle-Konfiguration in das pom (Parent-Pom oder Project-Pom) integrieren oder Sie können die Informationen in die globale m2e-Konfiguration in Eclipse . Integrieren. Auch Sie habe einige Quickfix-Aktionen zum Anwenden dieser Änderungen.

Die letzte Option ist, nach m2e-Connectors zu suchen oder auf neuere Versionen verschiedener Maven-Plugins mit integrierter m2e-Unterstützung (z. B. für Jaxb-Plugins) umzuschalten.

Hier (für Enforcer-Plugin) denke ich, die Definition im Pom ist der einfachste Weg.

Siehe auch: https://www.Eclipse.org/m2e/documentation/m2e-execution-not-covered.html

4
afischer

Nur eine Info für diejenigen von Ihnen, die ein Problem mit der Konfiguration Ihrer IDE in Ihrem Build-Modell haben. Behalten Sie diese Verbesserungsanforderung im Auge, die derzeit für die Kepler-Version bestimmt ist:

Bug 350414: Speichern Sie ignorierte m2e-Connectors außerhalb des Projekts pom.xmlhttps://bugs.Eclipse.org/bugs/show_bug.cgi?id=350414

2
rmp

Wie man das "Maven-Enforcer-Plugin (Ziel" erzwingen ") eliminiert, wird von der m2e-Warnung von Eclipse ignoriert?

Obwohl das Eclipse lifecycle-mapping-Plugin bereits für andere Projekte für mich gearbeitet hat, arbeite ich derzeit in einem IntelliJ-Shop mit meinem verdeckten Eclipse. Ich möchte mich nicht dadurch aussetzen, dass alle POM-Dateien der Gruppe org.Eclipse.m2e hinzugefügt werden.

Nach ein paar Versuchen habe ich festgestellt, dass Sie diese Warnung erhalten können, indem Sie die Lebenszykluszuordnungen in den Maven-Einstellungen ändern. Ehrlich gesagt bin ich mir nicht 100% sicher, was das macht, aber ich habe keine Nebenwirkungen gesehen ...

  1. Gehen Sie in Eclipse zu: Einstellungen → Maven → Lebenszykluszuordnungen.
  2. Klicken Sie auf Open workspace lifecycle mappings metadata, um die lifecycle-mapping-metadata.xml-Datei in einem Tab im Hintergrund zu öffnen. Ich gehe davon aus, dass dies der folgenden Datei in Ihrem Workspace-Unterverzeichnis entspricht:

    .metadata/.plugins/org.Eclipse.m2e.core/lifecycle-mapping-metadata.xml
    
  3. Fügen Sie als nächstes die folgende Zeilengruppe am Ende der Datei in <pluginExecutions>...</pluginExecutions> ein.

    <pluginExecution>
        <pluginExecutionFilter>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <versionRange>[1.0.0,)</versionRange>
            <goals>
                <goal>enforce</goal>
            </goals>
        </pluginExecutionFilter>
        <action>
            <ignore />
        </action>
    </pluginExecution>
    
  4. Sobald die XML-Datei gespeichert ist, müssen Sie zum Einstellungsfenster zurückkehren und Reload workspace lifecycle mappings metadata drücken, wodurch die Datei irgendwie kompiliert wird.

  5. Schließlich müssen Sie ein Maven-Update-Projekt für alle Ihre Projekte durchführen, um zu sehen, dass die Warnungen verschwinden.

Hoffe das hilft.

0
Gray

Für mich war es ein ähnliches Problem 

Ich hatte Maven 3.0.3 und Java 1.5

und mein pom hatte

<executions>
                    <execution>
                        <id>enforce-versions</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>[3.0.3,2.2.1,)</version>
                                </requireMavenVersion>
                                <requireJavaVersion>
                                    <version>[1.7, 1.8)</version>
                                </requireJavaVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

Wie Sie sehen können, habe ich keine Regeln getroffen. Daher habe ich Java aktualisiert und mvn gestartet. Ich war fertig. Hoffe das hilft jemandem.

0
tosha Shah

Eine andere Gefahr besteht, wenn mehrere PluginExecutionFilters vorhanden sind. Diese müssen in der pom.xml an der richtigen Stelle sein! Für mich war es gnarly zu finden, da kein Fehler oder eine Warnung der Verschiebung existierte. 

Dies ist der richtige Code für mehrere PluginExecutionFilters:

<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.maven.plugins</groupId>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <versionRange>[1.0.0,)</versionRange>
                        <goals>
                           <goal>enforce</goal>
                        </goals>
                    </pluginExecutionFilter>
                    <action><ignore/></action>
                </pluginExecution>
<!-- now here follows the new filter -->
                <pluginExecution>
                    <pluginExecutionFilter>
                        <groupId>com.googlecode.maven-Java-formatter-plugin</groupId>
                        ...
0
smön