2010-03-04 4 views
5

J'ai un plugin maven composé de quelques mojos. Supposons qu'il y ait myproject.FirstMojo déclaré @goal premier et myproject.SecondMojo déclaré @goal deuxièmemaven utilise @component pour injecter un mojo

ce que je veux faire est d'abord injecter Mojo comme propriété de seconde mojo. Ce que j'ai essayé est déclarer de la manière suivante:

/** 
* @component role="myproject.FirstMojo" 
*/ 
private FirstMojo first; 

Unfortunatly, en le faisant, je reçois une erreur Component descriptor cannot be found in the component repository:.

Que dois-je faire?

+0

@Sloin pourquoi insistez-vous sur ce point? Vous avez essayé de l'ajouter comme réponse et je l'ai signalé. Maintenant, vous voulez commenter cette question avec ce point non constructif et je le signalerai à coup sûr. Mais je voudrais comprendre votre point avant. – Riduidel

Répondre

3

Vous pouvez utiliser:

/** @component role="org.apache.maven.plugin.Mojo" role-hint="groupId:artifactId:version:second" */ 
private FirstMojo first; 

Notez qu'ils doivent être dans le même plug-in, et vous devez remplacer le groupe, artefact et version avec vos valeurs. Cela impliquera probablement de filtrer votre code source pour la version correcte, ce qui le rend un peu compliqué.

Je recommanderais fortement de factoriser la fonctionnalité dont vous avez besoin dans une classe séparée (peut-être un composant Plexus si vous avez besoin d'accéder à certains composants) ou une classe de base abstraite.

+0

Je vais en fait suivre vos conseils et ne pas compter sur la résolution de dépendance nexus, mais plutôt factorer le code pour une meilleure organisation. Merci quand même pour la réponse. – Riduidel

Questions connexes