2010-01-25 3 views
0

J'utilise un plugin maven qui définit un type d'empaquetage personnalisé et un cycle de vie pour mes projets. Appelons cet emballage "foo", défini par le "foo-plugin". Je n'ai aucun contrôle sur ce plugin, mais je veux étendre sa définition du cycle de vie dans mon plugin.Ajouter un mojo au cycle de vie personnalisé défini par un autre plugin maven

J'écris un autre plugin, appelons celui-ci le "plugin bar". Je veux qu'un certain objectif de mon plugin soit invoqué dans la phase process-sources d'un projet avec un packaging "foo". Pas dans les autres cas. J'ai défini un mojo à exécuter dans la phase des sources de processus, mais cela le fait s'exécuter dans la phase des sources de processus de n'importe quel projet, pas seulement celles avec le paquetage "foo".

/** 
* @goal bar 
* @phase process-sources 
*/ 
public class BarMojo extends AbstractMojo 

J'ai aussi essayé d'utiliser une définition du cycle de vie personnalisé pour prolonger le cycle de vie existant, comme celui-ci:

<component-set> 
    <components> 
    <component> 
     <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role> 
     <role-hint>foo</role-hint> 
     <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation> 
     <configuration> 
     <phases> 
      <process-sources>${groupId}:${artifactId}:${version}:bar</process-sources> 
     </phases> 
     </configuration> 
    </component> 
    </components> 
</component-set> 

Cela semblait être totalement ignoré, même avec l'élément <extensions> dans le pom mis à vrai. Est-il même possible d'étendre un cycle de vie défini par un plugin en utilisant un autre plugin et si oui, qu'est-ce que je fais de mal?

Edit: La structure du projet maven est le suivant: nom-projet (packaging)
mycompany-parent (pom)
- someprojecttype-parent (pom)
- - projet-1 (foo)
- - project-2 (foo)

Je souhaite ajouter le plug-in à someprojecttype-parent, dont l'emballage est défini sur pom. Cela provoque l'exécution de l'objectif de la barre lors de la construction du projet parent. Je veux seulement exécuter l'objectif du bar lors de la construction du projet-1 et du projet-2.

+0

Je tentais faire quelque chose de similaire. Je crois que j'ai pris les mêmes mesures que vous, mais quand je tente de construire mon projet, mon nouveau plugin n'est pas déclenché. Des suggestions sur ce que cela causerait? – groomsy

Répondre

1

en juger par le dernier bit il semble que vous avez besoin de mettre le plugin dans

<build> 
    <pluginManagement> 
     <plugins> 

plutôt que

<build> 
    <plugins> 

qui devrait limiter l'exécution à l'enfant projette

Questions connexes