site - Maven 3 Warnungen über build.plugins.plugin.version




maven-release-plugin (4)

Seit ich auf Maven 3 aktualisiert habe, erhalte ich bei jedem Build folgende Warnmeldungen:

Wie kann ich diese Warnungen loswerden?

[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for proj:id:jar:3.1
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-javadoc-plugin is missing. @ line 195, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 204, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin is missing. @ line 227, column 15
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-jar-plugin is missing. @ line 215, column 15
[WARNING] 'reporting.plugins.plugin.version' for org.codehaus.mojo:jdepend-maven-plugin is missing. @ line 271, column 15
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.

Es ist eine großartige Antwort hier drin. Und ich möchte hinzufügen "Warum ein Element in Maven3 hinzufügen".
In https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes

Plugin Metaversion Auflösung
Intern verwendete Maven 2.x die speziellen Versionsmarken RELEASE und LATEST, um die automatische Versionsauflösung der Plugins zu unterstützen. Diese Metaversionen wurden auch im Element für eine Deklaration erkannt. Aus Gründen der reproduzierbaren Builds unterstützt Maven 3.x nicht mehr die Verwendung dieser Metaversionen in der POM. Daher müssen Benutzer Vorkommen dieser Metaversionen durch eine konkrete Version ersetzen.

Und ich finde auch in Maven-Compiler-Plugin - Verwendung

Hinweis: Maven 3.0 wird Warnungen ausgeben, wenn Sie die Version eines Plugins nicht angeben.


Fügen Sie ein <version> -Element nach dem <plugin> <artifactId> in Ihrer pom.xml Datei hinzu. Finde den folgenden Text:

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>

Fügen Sie das Versionstag hinzu:

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3.2</version>

Die Warnung sollte behoben werden.

Bezüglich dieser:

'build.plugins.plugin.version' für org.apache.maven.plugins: maven-compiler-plugin fehlt

Viele Leute haben erwähnt, warum das Problem auftritt, aber schlagen keine Lösung vor. Alles, was ich tun musste, war, in meine POM-Datei für mein Projekt zu gehen und das <version> -Tag hinzuzufügen, wie oben gezeigt.

Um die Versionsnummer zu ermitteln, können Sie in Mavens Ausgabe nach der Ausführung suchen. Wo Versionsnummern fehlen, zeigt Maven seine Standardversion an:

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ entities ---

Nimm diese Versionsnummer (wie in der obigen 2.3.2 ) und füge sie wie gezeigt deinem POM hinzu.


Ich verwende einen Eltern-Pom für meine Projekte und wollte die Versionen an einem Ort angeben. Daher habe ich die Eigenschaften mithilfe von Eigenschaften angegeben:

Elternteil Pom:

<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/xsd/maven-4.0.0.xsd">
    ....
    <properties>
        <maven-compiler-plugin-version>2.3.2</maven-compiler-plugin-version>
    </properties>
    ....
</project>

Projektpom:

<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/xsd/maven-4.0.0.xsd">
    ....
    <build>
        <finalName>helloworld</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin-version}</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Siehe auch: https://www.allthingsdigital.nl/2011/04/10/maven-3-and-the-versions-dilemma/


Lauf wie:

  $ mvn help:describe -DartifactId=maven-war-plugin -DgroupId=org.apache.maven.plugins

für Plug-Ins, die keine Version haben. Sie erhalten eine Ausgabe:

Name: Maven WAR Plugin
Description: Builds a Web Application Archive (WAR) file from the project
  output and its dependencies.
Group Id: org.apache.maven.plugins
Artifact Id: maven-war-plugin
Version: 2.2
Goal Prefix: war

Verwenden Sie die Version, die in der Ausgabe angezeigt wird.

UPDATE Wenn Sie eine Liste von Versionen auswählen möchten, verwenden Sie http://search.maven.org/ oder http://mvnrepository.com/ Beachten Sie, dass Ihre bevorzugte Java-IDE den Maven- Paketsuchdialog haben muss. Überprüfen Sie einfach die Dokumentation.

SUPER UPDATE verwende ich auch:

$ mvn dependency:tree
$ mvn dependency:list
$ mvn dependency:resolve
$ mvn dependency:resolve-plugins  # <-- THIS

Vor kurzem habe ich herausgefunden, wie man die neueste Version für das Plug-in (oder die Bibliothek) bekommt, damit man nicht mehr googlen oder Maven Central besuchen muss:

$ mvn versions:display-dependency-updates
$ mvn versions:display-plugin-updates     # <-- THIS




maven-3