Depuis que j'ai mis à jour Maven 3, les messages d’avertissement suivants apparaissent à chaque construction:
Comment puis-je me débarrasser de ces avertissements?
[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.
Ajoutez un élément <version>
après le <plugin>
<artifactId>
dans votre fichier pom.xml
. Trouvez le texte suivant:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
Ajoutez-y la balise de version:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
L'avertissement devrait être résolu.
À ce sujet:
'build.plugins.plugin.version' pour org.Apache.maven.plugins: le plugin maven-compiler est manquant
Beaucoup de gens ont mentionné pourquoi le problème se pose, mais ne suggèrent pas de solution. Tout ce que j'avais à faire était d'aller dans mon fichier POM pour mon projet et d'ajouter la balise <version>
comme indiqué ci-dessus.
Pour découvrir le numéro de version, vous pouvez notamment regarder dans la sortie de Maven à la fin de son exécution. Là où il manque des numéros de version, Maven affichera sa version par défaut:
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ entities ---
Prenez ce numéro de version (comme dans le 2.3.2
ci-dessus) et ajoutez-le à votre POM, comme indiqué.
Courez comme:
$ mvn help: décris -DartifactId = plugin maven-war -DgroupId = org.Apache.maven.plugins
pour plug-in qui n'ont pas de version. Vous obtenez une sortie:
Nom: Maven WAR Plugin Description: Construit un fichier WAR (Web Application Archive) à partir du projet sortie et ses dépendances . Identifiant de groupe: org.Apache.maven.plugins Identifiant d'artefact: maven-war-plugin Version: 2.2 Préfixe de l'objectif: war.
Utilisez la version indiquée dans la sortie.
UPDATE Si vous voulez choisir parmi une liste de versions, utilisez http://search.maven.org/ ou http://mvnrepository.com/ Notez que votre Java préféré IDE doit avoir boîte de dialogue de recherche de paquet Maven. Il suffit de vérifier docs.
SUPER UPDATE J'utilise aussi:
$ mvn dependency:tree
$ mvn dependency:list
$ mvn dependency:resolve
$ mvn dependency:resolve-plugins # <-- THIS
Récemment, je découvre comment obtenir la dernière version de pour le plug-in (ou la bibliothèque), de sorte que vous n'avez plus besoin de googler ou de visiter Maven Central:
$ mvn versions:display-dependency-updates
$ mvn versions:display-plugin-updates # <-- THIS
Maven 3 est plus restrictif avec la structure POM. Vous devez par exemple définir des versions de Plugins.
Avec maven 3.1, ces avertissements peuvent vous empêcher de construire. Il existe d'autres modifications entre maven2 et maven3: https://cwiki.Apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes
J'utilise un pom parent pour mes projets et je voulais spécifier les versions en un seul endroit. J'ai donc utilisé les propriétés pour spécifier la version:
pom parent:
<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>
pom de projet:
<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>
Voir aussi: https://www.allthingsdigital.nl/2011/04/10/maven-3-and-the-versions-dilemma/
obtenir les dernières informations de version de:
https://mvnrepository.com/artifact/org.Apache.maven.plugins/maven-compiler-plugin
cliquez sur la dernière version (ou celle que vous souhaitez utiliser) et vous verrez les informations de dépendance:
<!-- 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>
vous voudrez peut-être utiliser la balise de version et le commentaire de votre balise de plug-in.
<!-- 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>
si vous le souhaitez, vous pouvez modifier votre pom pour que les informations de version figurent dans la balise properties, comme indiqué dans une autre réponse.
C'est une bonne réponse ici. Et je veux ajouter «Pourquoi ajouter un élément dans Maven3».
In Notes de compatibilité Maven 3.x
Résolution de métaversion du plugin
En interne, Maven 2.x a utilisé les marqueurs de version spéciaux RELEASE et LATEST pour prendre en charge la résolution automatique de version de plug-in. Ces métaversions ont également été reconnues dans l'élément de déclaration. Par souci de construction reproductible, Maven 3.x ne prend plus en charge l’utilisation de ces métaversions dans le POM. En conséquence, les utilisateurs devront remplacer les occurrences de ces métaversions par une version concrète.
Et je trouve aussi dans maven-compiler-plugin - usage
Remarque: Maven 3.0 émettra des avertissements si vous ne spécifiez pas la version d'un plugin.
Recherchez "maven-jar-plugin" dans pom.xml Et ajoutez la balise version Maven version