Maven Multi-Modul Projekt - Kopieren aller "Paket" JARS von Submodulen in Eltern / Ziel /
Ich habe ein maven-Projekt mit ganz wenigen Submodule. Was ich Suche, ist ein Weg, um alle .jar-Dateien erzeugt, die von der sub-Module, die in der Aggregation POM /target/- Verzeichnis, so dass Sie bequem verwendet danach.
- Sie nicht brauchen, zusammengeführt werden. Vorzugsweise nicht, aber wenn Sie muss werden, dann ist das ok.
- Kümmern sich nicht um Abhängigkeiten
- Dies ist in Erster Linie für die Bequemlichkeit, an dieser Stelle
Einer basic-version von dem, was ich Suche zu tun:
Prj1/pom.xml => prj1/target/proj1.jar (and classes/generated-sources/etc)
Prj2/pom.xml => prj2/target/proj2.jar
Main/pom.xml =>
main/target/proj1.jar
main/target/proj2.jar
... classes/generated-sources not needed at all,
... but they could be combined here. I assume they will be
Ich gelesen habe, und über einige Vorschläge von SO gut. Bisher habe ich noch keinen Weg gefunden, um dies zu tun, aber ich bin mir sicher, dass es da ist.
edit:
Hab ich aufgegeben, immer diese arbeiten in einfacher Weise für alle enthaltenen subprojets. Die beste Antwort, die ich habe, so weit ist es mit der Abhängigkeit plugin manuell angeben (wieder), und jedes sub-Modul enthalten sein. Die Idee war in der Lage, konfigurieren Sie die POMs leicht für Dutzende von clients, einfach einschließlich der Module notwendig, und dann, nachdem es magisch-stick alle sub-Module die Gläser an einem Ort. Maven ist ziemlich nett, wenn du dich nicht viel mit ihm, aber der Winkel der Steuer ist unglaublich, wenn Sie versuchen.
Ich finde es immer noch seltsam, dass so standard-scheinende Aufgaben (ausgehend von den Fragen, auf die SO, und was jedem normalen Projekt tun würde) so schwierig sind. Ist maven3 besser?
InformationsquelleAutor der Frage Andrew Backer | 2011-11-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen, die maven-dependency-plugin:kopieren plugin:goal.
Müssen Sie fügen Sie diese an die pom aller Submodule, die Sie kopieren möchten.
EDIT: Oder einfach nur in der parent pom (siehe Kommentare).
Wenn Sie tun, diese in die parent pom, halten Sie im Verstand, dass es gut funktionieren nur, wenn das gesamte Projekt ist ein Modul tief. Das heißt, wenn die Module unter dem übergeordneten Modul haben Ihre eigene Submodule, Sie wird am Ende nicht in den gewünschten Ordner. Ihre Ordner-Struktur so Aussehen:
Um dies zu verhindern, erstellen Sie ein eigenes Modul mit obiger Konfiguration, und geben Sie manuell jedes Modul, das Sie kopieren möchten. Auf diese Weise werden alle Module, egal wie tief Sie werden wird am Ende in einem Ordner.
InformationsquelleAutor der Antwort Brambo
Habe ich verbrachte den ganzen Tag versuchen, diese zu lösen... und endlich hat es funktioniert, obwohl ich auf einem harten Zeitplan, Teile ich es hier, wenn ich nur jemand retten frustration in der Zukunft...
Schritt 1. Erstellen Sie eine zusätzliche Maven-Projekt, ein Elternteil von all den Projekten, die Sie kopieren möchten, zusammen. Nennen wir dieses Projekt
parent
.Diesem Projekt ist zu sagen, benötigt Maven, welche Projekte gemeinsam errichten. Außerdem werden Sie erklären in Ihren anderen Projekten, dass Ihre übergeordnete
parent
so werden Sie sehen, dass dieMyDir
Eigenschaft, die Sie hier definieren.Schritt 2. Für jedes Projekt, dass Sie möchten, zu kopieren und den gleichen Speicherort angeben, dass es der Elternteil ist, der
parent
Projekt (stellen Sie sicher, Sie geben Sie die richtige groupId und artifactId und version Ihres übergeordneten Projekt):Und auch, für jedes dieser Projekte, geben Sie auch die jar-und dependency-plugins-Einstellungen, etwa so:
Dann einfach laufen
mvn install
auf das übergeordnete Projekt. Bam!P. S. Das Beispiel oben nimmt alle Projekte befinden sich im gleichen Verzeichnis (parent-project neben den Kindern), aber ändern kann man relative Pfade, wie Sie es wünschen.
InformationsquelleAutor der Antwort akuz
Ein Weg dies zu erreichen wäre, um die moduleSet Möglichkeit,maven-assembly-plugin.
Konnten Sie erstellen eine assembly-descriptor wie folgt aus (eine Variante von dem Beispiel in den link) und verwenden Sie es in der assembly-plugin-Deklaration in der pom.
InformationsquelleAutor der Antwort Raghuram