Seit ich auf Maven 3 aktualisiert habe, bekomme ich bei jedem Build die folgenden 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.
Fügen Sie ein <version>
-Element nach dem <plugin>
<artifactId>
in Ihrer pom.xml
-Datei ein. Finden Sie den folgenden Text:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
Fügen Sie das Versions-Tag hinzu:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
Die Warnung sollte behoben sein.
Was das betrifft:
'build.plugins.plugin.version' für org.Apache.maven.plugins: maven-compiler-plugin fehlt
Viele Leute haben warum erwähnt - das Problem tritt auf, schlägt jedoch keine Korrektur vor. Ich musste nur in meine POM-Datei für mein Projekt gehen und den <version>
-Tag wie oben gezeigt hinzufügen.
Um die Versionsnummer zu ermitteln, können Sie die Maven-Ausgabe nach dem Ausführen überprüfen. Wenn Ihnen Versionsnummern fehlen, zeigt Maven seine Standardversion an:
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ entities ---
Nehmen Sie diese Versionsnummer (wie oben in 2.3.2
) und fügen Sie sie wie gezeigt zu Ihrem POM hinzu.
Laufen wie:
$ mvn help: Beschreibe -DartifactId = Maven-War-Plugin -DgroupId = org.Apache.maven.plugins
für Plug-Ins, die keine Version haben. Sie erhalten Ausgabe:
Name: Maven WAR Plugin Beschreibung: Erstellt eine WAR-Datei (Web Application Archive) aus dem Projekt Ausgabe und ihre Abhängigkeiten . Gruppen-ID: org.Apache.maven.plugins Artefakt-ID: maven-war-plugin Version: 2.2 Zielpräfix: war
Verwenden Sie die in der Ausgabe angezeigte Version.
UPDATE Wenn Sie eine Liste der Versionen auswählen möchten, verwenden Sie http://search.maven.org/ oder http://mvnrepository.com/ Beachten Sie, dass Sie Java als Favorit verwenden IDE muss Dialogfeld zum Suchen von Maven-Paketen haben. Überprüfen Sie einfach die Dokumente.
SUPER UPDATE benutze ich auch:
$ mvn dependency:tree
$ mvn dependency:list
$ mvn dependency:resolve
$ mvn dependency:resolve-plugins # <-- THIS
Kürzlich entdeckte ich, wie man die latest -Version für das Plug-In (oder die Bibliothek) erhält, sodass man nicht mehr googeln oder Maven Centralbesuchen muss. _:
$ mvn versions:display-dependency-updates
$ mvn versions:display-plugin-updates # <-- THIS
Maven 3 ist mit der POM-Struktur restriktiver. Sie müssen beispielsweise Versionen von Plugins einstellen.
Mit maven 3.1 können diese Warnungen Ihren Build zerstören. Es gibt weitere Änderungen zwischen maven2 und maven3: https://cwiki.Apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes
Ich verwende ein übergeordnetes Pom für meine Projekte und wollte die Versionen an einer Stelle angeben. Daher habe ich Eigenschaften verwendet, um die Version anzugeben:
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>
projekt 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">
....
<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/
die neuesten Versionsinformationen erhalten Sie von:
https://mvnrepository.com/artifact/org.Apache.maven.plugins/maven-compiler-plugin
klicken Sie auf die neueste Version (oder die Version, die Sie verwenden möchten) und Sie sehen die Abhängigkeitsinformationen:
<!-- https://mvnrepository.com/artifact/org.Apache.maven.plugins/maven-compiler-plugin -->
<dependency>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
</dependency>
möglicherweise möchten Sie das Versions-Tag und den Kommentar für Ihr Plugin-Tag verwenden.
<!-- https://mvnrepository.com/artifact/org.Apache.maven.plugins/maven-compiler-plugin -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source />
<target />
</configuration>
</plugin>
wenn Sie möchten, können Sie Ihr Pom so ändern, dass die Versionsinformationen im Eigenschaften-Tag enthalten sind, wie in einer anderen Antwort beschrieben.
Es ist eine großartige Antwort hier. Und ich möchte hinzufügen "Warum ein Element in Maven3 hinzufügen".
In Maven 3.x Kompatibilitätshinweise
Plugin-Metaversion-Auflösung
Intern verwendete Maven 2.x die speziellen Versionsmarkierungen RELEASE und LATEST, um die automatische Versionsauflösung von Plugins zu unterstützen. Diese Metaversionen wurden auch im Element für eine Deklaration erkannt. Für reproduzierbare Builds unterstützt Maven 3.x die Verwendung dieser Metaversionen im POM nicht mehr. 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 gibt Warnungen aus, wenn Sie die Version eines Plugins nicht angeben.
Suchen Sie nach "maven-jar-plugin" in pom.xml Und fügen Sie das Versions-Tag Maven-Version hinzu