2010-03-04 9 views
5

Ich habe ein Maven-Plugin, das aus einigen Mojos besteht. myproject.FirstMojo erklärt als @goal erste und myproject.SecondMojo erklärt als @goal zweitemaven @ Komponent verwenden, um ein Mojo zu injizieren

, was ich tun möchte, ist zu injizieren erste mojo als Eigentum der zweiten mojo dort Angenommen ist. Was ich versucht habe, ist es die folgende Art und Weise erklären:

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

Unfortunatly, wenn dies zu tun, erhalte ich eine Component descriptor cannot be found in the component repository: Fehler.

Was soll ich tun?

+0

@Leisten, warum bestehen Sie auf diesen Punkt? Sie haben versucht, es als Antwort hinzuzufügen, und ich habe es markiert. Jetzt möchten Sie diese Frage mit diesem unkonstruktiven Punkt kommentieren und ich werde es sicher kennzeichnen. Aber ich würde gerne Ihren Standpunkt verstehen. – Riduidel

Antwort

3

können Sie verwenden:

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

Beachten Sie, dass sie in der gleichen Plugin sein, und Sie müssen die Gruppe, Artefakt und die Version mit Ihren Werten ersetzen. Dies beinhaltet wahrscheinlich das Filtern Ihres Quellcodes für die korrekte Version, was es ein wenig kompliziert macht.

Ich würde sehr empfehlen, die Funktionalität, die Sie benötigen, in eine separate Klasse (vielleicht eine Plexus-Komponente, wenn Sie Zugriff auf einige Komponenten in dort benötigen) oder eine abstrakte Basisklasse.

+0

Ich werde Ihrem Rat folgen und mich nicht auf die Nexus-Abhängigkeitslösung verlassen, sondern stattdessen den Code für eine bessere Organisation ausarbeiten. Danke trotzdem für die Antwort. – Riduidel

Verwandte Themen