353 votes

Avertissements de Maven 3 à propos de build.plugins.plugin.version

Depuis que j'ai mis à jour Maven 3, je reçois les messages d'avertissement suivants à 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.

1 votes

Dans Maven 3.5.3, c'est maintenant une erreur. Ne négligez pas les avertissements ! Merci à @gavenkoa pour la réponse sur la façon de trouver la version du plugin.

447voto

Todd Points 1441

Ajouter un <version> après l'élément <plugin> <artifactId> dans votre pom.xml fichier. Trouvez le texte suivant :

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

Ajoutez-y la balise version :

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

L'avertissement devrait être résolu.

A propos de ça :

build.plugins.plugin.version' pour org.apache.maven.plugins:maven-compiler-plugin est manquant.

De nombreuses personnes ont mentionné pourquoi le problème se produit, mais ne parviennent pas à suggérer une solution. Tout ce que j'avais à faire, c'était d'aller dans mon fichier POM pour mon projet, et d'ajouter la balise <version> comme indiqué ci-dessus.

Pour connaître le numéro de version, on peut regarder dans la sortie de Maven à la fin de son exécution. Lorsqu'il manque des numéros de version, Maven affiche 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é.

5 votes

@JBT ne comprend pas pourquoi ? les constructions maven sont censées être stables, donc la version que l'on utilise devrait être explicitement définie. C'est pourquoi maven le demande. Comme le dit le message, "Il est fortement recommandé de corriger ces problèmes car ils menacent la stabilité de votre build".

3 votes

Il s'agit d'un problème un peu étrange car il ne se pose que si vous avez ajouté une entrée pour le plugin dans le fichier POM du projet. Le POM effectif possède l'élément version mais vous devez quand même ajouter un élément version au POM du projet pour supprimer cet avertissement.

2 votes

Je reçois les mêmes avertissements que dans la question initiale, mais mon pom.xml ne contient aucune référence à maven-compiler-plugin. Que me manque-t-il ? Merci !

97voto

gavenkoa Points 6974

Courir comme ça :

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

pour les plug-in qui n'ont pas de version. Vous obtenez un résultat :

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

Utilisez la version indiquée dans la sortie.

UPDATE Si vous voulez choisir parmi une liste de versions, utilisez http://search.maven.org/ o http://mvnrepository.com/ Notez que votre IDE Java préféré doit avoir Dialogue de recherche de paquets Maven . Vérifiez les documents.

SUPER MISE À JOUR J'utilise aussi :

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

Récemment, j'ai découvert comment obtenir dernier site version du plug-in (ou de la bibliothèque) pour qu'il ne soit plus nécessaire de googler ou de visiter le site. Maven Central :

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

8 votes

+1. Une variante alternative et plus compacte : mvn help:describe -Dplugin=groupId:artifactId

3 votes

En effet, cela n'a pas donné de solution mais c'est quand même un contenu précieux : comment en effet trouver la version utilisée/attendue. Il aurait peut-être été intéressant de mentionner le placement de ces versions de plugin dans un parent-pom en utilisant le pluginManagement-tag : stackoverflow.com/a/10483284/1023341

16voto

Wolfgang Fahl Points 1920

Pour obtenir les dernières informations sur la version :

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 sur les dépendances (à partir de 2019-05, c'est 3.8.1) :

<!-- 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.8.1</version>
</dependency>

vous pouvez utiliser la balise version et le commentaire pour la balise de votre plugin.

<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source />
        <target />
    </configuration>
</plugin>

Si vous voulez, vous pouvez modifier votre pom pour avoir les informations de version dans la balise properties comme indiqué dans une autre réponse.

15voto

Christian Kuetbach Points 9476

Maven 3 est plus restrictif avec la POM-Structure. Vous devez définir les versions des plugins par exemple.

Avec maven 3.1, ces avertissements peuvent interrompre votre construction. Il y a plus de changements entre maven2 et maven3 : https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibilité+Notes

11voto

Patrick Koorevaar Points 105

J'utilise un pom parent pour mes projets et je voulais spécifier les versions en un seul endroit, donc j'ai 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>

projet 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>

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

1 votes

Je pense qu'il serait préférable, ou du moins plus naturel, d'utiliser pluginManagement pour les versions des plugins.

0 votes

Sauf si vous avez un pluginManagement prioritaire dans le POM enfant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X