web-dev-qa-db-fra.com

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

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.
282
Istao

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é.

353
Todd

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
76
gavenkoa

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

13

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/

9
Patrick Koorevaar

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.

4
Wolfgang Fahl

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.

2
ohahohah

Recherchez "maven-jar-plugin" dans pom.xml Et ajoutez la balise version Maven version

0
Shukant