Für Ausbildungszwecke Ich habe ein Projekt-Layout wie so (flach, um einen besseres Hotel Eclipse) einzurichten:Maven - 'all' oder 'Eltern' Projekt für die Aggregation?
-product
|
|-parent
|-core
|-opt
|-all
Elternteil enthält ein Aggregat Projekt mit Kern, entscheiden und alles. Core implementiert den obligatorischen Teil der Anwendung. Opt ist ein optionaler Teil. Alles soll core mit opt kombinieren und hat diese beiden Module als Abhängigkeiten aufgelistet.
ich jetzt versuchen, die folgenden Artefakte zu machen:
- Produkt-core.jar
- Produkt-Core-src.jar
- Produkt-Kern-mit-dependencies.jar
- Produkt-opt.jar
- Produkt-Opt-src.jar
- Produkt-Opt-mit-dependencies.jar
- Produkt-all.jar
- Produkt-all-src.jar
- Produkt-all-mit-dependencies.jar
Die meisten von ihnen relativ einfach herzustellen sind. Ich habe jedoch ein Problem mit den aggregierenden Artefakten. Ich habe es geschafft, die Produkt-all-src.jar mit einem benutzerdefinierten Assembly-Deskriptor in dem Modul "all" zu erstellen, das die Quellen für alle nicht-transitiven Deps herunterlädt, und das funktioniert gut. Diese Technik erlaubt mir auch, das Produkt all-with-dependencies.jar zu erstellen.
Ich habe jedoch kürzlich herausgefunden, dass Sie das source: aggregierte Ziel im Quell-Plugin verwenden können, um Quellen des gesamten aggregierten Projekts zu aggregieren. Dies gilt auch für das Javadoc-Plugin, das auch durch die Verwendung des übergeordneten Projekts aggregiert.
Also bin ich hin- und hergerissen zwischen meinem 'all' Modulansatz und dem 'all' Modul und benutze einfach das 'elterliche' Modul für die gesamte Aggregation. Es fühlt sich unrein an, dass einige aggregierte Artefakte in "Eltern" erzeugt werden und andere in "Alle" produziert werden. Gibt es eine Möglichkeit, ein Produkt-All-Jar im übergeordneten Projekt zu erstellen oder Javadoc im All-Projekt zu aggregieren? Oder sollte ich beide behalten?
Dank
Danke für den Tipp. Ich habe es mir nur angeschaut und es scheint so, als ob die Quelle der Maven dem allgemeinen Layout folgt, das ich vorgeschlagen habe, jedoch ohne den Baum zu verflachen, wie Sie darauf hingewiesen haben. Die letzte Assembly ist IMO nicht sehr sauber, es tut nur eine regex grep für alle Quelldateien im '../' Verzeichnis, nicht einfach, wenn Sie Quellen von 3rd Party-Abhängigkeiten usw. wollen. Auch nicht im Einklang mit dem Javadoc Aggregator-Arbeit (über das Elternprojekt). Es scheint, dass die Funktionalität, die ich gerne hätte, fehlt, ich werde versuchen, hier einen alternativen Ansatz aufzuschreiben, wenn ich etwas experimentiert habe. Danke für den Zeiger. –
BTW, die src-Assembly finden Sie unter http://svn.apache.org/repos/asf/maven/maven-3/trunk/apache-maven/src/main/assembly/src.xml –