2010-09-17 2 views
58

Ich habe eine Plexus-Komponente erstellt, die eine gemeinsame Logik für mehrere Mojos enthält, die ich erstellen möchte. Ich konnte Informationen wie localRepository weitergeben und vom Mojo (und Testfällen) projizieren.So erhalten Sie die aktuelle MavenSession oder MavenExecutionRequest von einer Plexus-Komponente

Ich frage mich, ob es einen Weg gibt, die oder MavenExecutionRequest aus der Komponente zu bekommen, ohne sie als Parameter von einem Mojo übergeben zu müssen. Ich weiß, dass meine Komponente von einem Maven Mojo läuft.

Ich benutze Maven 2 in diesem Fall.

+0

Ich weiß, die Frage ist ziemlich alt. Thomas, möchtest du die identische Session über mehrere Phasen "wiederverwenden" oder brauchst du nur einen Hinweis auf die aktuelle MavenSession der Phase? –

+0

Hmm .. wenn es da wäre, dann wäre es sicher nicht mehr threadsicher. – eckes

Antwort

1

Ich glaube nicht, dass es gibt, noch würde ich denken, dass es eine gute Idee ist.

Aus meinem Verständnis, was Sie erreichen wollen, ist eine Commons-ähnliche Komponente, die für mehrere Mojos verwendet wird. Dies erfordert, dass die aktuelle Maven-Sitzung in & übergeben wird, die verwendet wird, um anschließend einen Wert zurückzugeben.

Der Weg Maven funktioniert jedoch, ist, dass es Ziele von Plugins in einer fast containerartigen Umgebung ausführt. Jedes Plugin darf innerhalb einer bestimmten Maven Phase, wie durch die <executions /> definiert, handeln. Dies erlaubt Maven, die Komplexität des Erstellens, Testens, Überprüfens, Einsetzens usw. zu trennen. Rufen Sie mvn clean install auf, es sei denn, ich bin ein Fehler, ist zwei separate Ausführungen, eine cleanbuild lifecycle, gefolgt von der install.

Es ist daher nicht sicher anzunehmen, dass die und die nachfolgende MavenExecutionRequest dieselbe Instanz darstellen, die in einem vorherigen Aufruf verwendet wurde. clean ist ein separater Aufruf, dessen Logik in einer neuen Sitzung nicht beibehalten werden soll.

Also, was ich sage, im Wesentlichen ist, dass eine gemeinsame Plexus Komponente während ist eine gute Praxis, vor allem Konsistenz in Ihrem Mojos zu halten, es ist richtig, Praxis (fast ioc), die entsprechende Sitzung jedes Mal zur Verfügung zu stellen .

Ich hoffe, das ist die Antwort, die Sie suchen. Ziemlich lang, aber um zu verstehen, warum Sie die Sitzung bereitstellen müssen, denken Sie Maven.

Verwandte Themen