2009-02-12 15 views
3

Si je définis un plugin dans le tag <build> et que vous voulez l'utiliser dans ma commande de site, comment puis-je faire cela? Dois-je définir le plugin au sein de < en indiquant à nouveau > tag?Maven 2 plugin, build + surefire

Et que diriez-vous de la configuration que j'ai probablement fait dans la balise de construction et que vous souhaitez avoir lieu à l'étiquette de reporting ainsi? (Je ne veux pas spécifier par exemple l'emplacement d'un fichier de configuration à deux reprises pour utiliser un plugin dans 2 cycles de vie)

Par exemple: Je définis mon plugin checkstyle dans la balise de construction et configue un emplacement personnalisé pour les règles à être utilisé. Je fais cela parce que les règles sont emballées dans un pot afin que je puisse le définir comme une dépendance. Ce ne serait pas possible si je le fais dans la balise de reportage. Mais j'ai besoin d'utiliser ce plugin dans la balise de reporting afin que surfire puisse générer un rapport pour checkstyle. Donc je dois aussi définir le plugin dans la balise de reporting.

Peut-être que je fais quelque chose de mal complet ici, mais je ne vois pas comment je peux le faire à part cela. Ce que je n'aime pas, c'est que j'ai 1 plugin deux fois dans mon pom (dans l'étiquette de construction et la balise de reportage).

J'espère que quelqu'un peut vérifier ma solution est ok, ou donnez-moi un conseiller sur la façon de le faire mieux.

thx

Kuku

Répondre

4

Un plugin Maven est généralement lié à l'exécution dans une phase du cycle de vie donnée lorsque vous définissez. Le plugin lui-même spécifie quelle phase du cycle de vie c'est, mais vous pouvez le changer si vous avez des besoins spéciaux.

Si vous avez un multi-module, vous pouvez construire définir un ensemble de plug-ins avec tous les paramètres requis dans un commun parent-pom. Cela sera normalement exécuté pour chaque sous-module de la construction. Si vous ne voulez pas que cela vous arrive pouvez définir (dans la pom-mère) comme ceci:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <skip>true</skip> 
     </configuration> 
    ... More plugin cofniguration stuff ... 
</plugin> 

Si vous dans un ou plusieurs imbriqués moudules voulez activer ce plugin, vous pouvez simplement dire:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <skip>false</skip> 
     </configuration> 
    ... Maybe Configuration .... 
</plugin> 

Dans ce module spécifique. Vous pouvez choisir si vous souhaitez reconfigurer les paramètres par défaut hérités de la définition parente ou non.

Je pense que c'est ce que vous cherchez?

+0

oh je ne savais pas à ce sujet. Donc, fondamentalement, je n'ai pas besoin d'ajouter checkstyle et pmd plugin dans la balise de reporting du pom car ils sont le plus souvent liés au cycle de vie du site non? – kukudas

+0

S'ils sont déclarés dans le super pom, alors oui. Vous pouvez vouloir vérifier que cela fonctionne comme vous le pensez;) – krosenvold

+0

Devrais-je les définir sous build - plugins - plugin ou build - pluginmanagement - plugins - plugin? Je vais essayer ça. – kukudas

2

En plus de la réponse de KRosenvold, vous pouvez également réduire la configuration en déclarant un plug-in dans la section <pluginManagment>, peut-être à votre topmost pom in the inheritance chain, et vous pouvez omit specifying the version of the plugin in all the other places you are declaring it's use.

Parent Pom:

<pluginManagement> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.2-beta-1</version> 
     </plugin> 
    </plugins> 
<pluginManagement> 

enfant Pom:

<plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
    </plugin> 
</plugins>