Wie zu verwenden Maven-assembly-plugin mit multi-Modul maven-Projekt
Ich bin neu in maven und verbrachte ~3 Tage in der Erzeugung der zip-Datei mit dem assembly-plugin bezieht sich auf http://www.petrikainulainen.net/programming/tips-and-tricks/creating-a-runnable-binary-distribution-with-maven-assembly-plugin/ Mein Projekt ist multi-Modul, so dass ich auch im Sinne Verwalten von multi-Modul-Abhängigkeiten mit dem Maven assembly plugin
Dennoch habe ich einige Ineffizienzen. Unten ist assembly.xml (die habe ich geerbt von 1. link)
<assembly>
<id>bin</id>
<!-- Generates a zip package containing the needed files -->
<formats>
<format>zip</format>
</formats>
<!-- Adds dependencies to zip package under lib directory -->
<dependencySets>
<dependencySet>
<!-- Project artifact is not copied under library directory since it is
added to the root directory of the zip package. -->
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
<unpack>false</unpack>
</dependencySet>
</dependencySets>
<moduleSets>
<moduleSet>
<!-- Enable access to all projects in the current multimodule build! <useAllReactorProjects>true</useAllReactorProjects> -->
<!-- Now, select which projects to include in this module-set. -->
<includes>
<include>com.XX:YY-main</include>
</includes>
<!--<binaries> <outputDirectory>YY-main/target</outputDirectory> <unpack>false</unpack>
</binaries> -->
</moduleSet>
</moduleSets>
<fileSets>
<!-- Adds startup scripts to the root directory of zip package. The startup
scripts are located to src/main/scripts directory as stated by Maven conventions. -->
<fileSet>
<directory>${project.build.scriptSourceDirectory}</directory>
<outputDirectory>conf</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>log4j.properties</include>
</includes>
</fileSet>
<!-- adds jar package to the root directory of zip package -->
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*with-dependencies.jar</include>
</includes>
</fileSet>
</fileSets>
Unten ist die pom.xml (primär-oder Haupt -)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration> <descriptors>
<descriptor>YY-main/src/main/assembly/assembly.xml</descriptor>
<!-- <descriptor>DummyAssembly.xml</descriptor> -->
</descriptors>
</configuration>
</plugin>
Fragen:
1)Seit assembly.xml bezeichnet in der Grundschule pom, alle Submodule erhalten auch RV. Wie kann ich festlegen, nur bestimmte Submodule gezippt werden, während alle anderen ignoriert. Ich versuchte mich zu bewegen YY-main/src/main/assembly/assembly.xml aus der main-pom Kind/Submodul pom und haben dummyassembly.xml in main-die tut nichts. Aber das funktioniert nicht (vielleicht, weil dummyassembly.xml fehlen einige erforderliche Linien). habe versucht, einige Dinge, aber nichts scheint zu funktionieren
2)Auch in assembly.xml (dependencyset), es ist das kopieren aller Bibliotheken "lib" - Ordner. Wie kann ich dies vermeiden. wieder versuchte ich einige Dinge (Ausschluss..), basierend auf http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html#class_dependencySet aber nichts funktionierte.
Kann jemand mir mit konkreten Aussagen, die ich ändern sollte in meinem pom oder assembly Dateien auf Adresse 1-und 2-Dank
- kashili kashili: Wenn Sie wissen, wie zu tun, habe ich hier eine Frage: stackoverflow.com/q/33088454/1735836
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die grundlegende Sache, die Sie ändern sollten, ist das erstellen eines separaten Modul, wo Sie die Verpackung, welche wie folgt aussieht.
Die pom in den
mod-assembly
wird wie folgt Aussehen:Löst die Probleme bei der Ausführung von maven-assembly-plugin in jedem Kind, und das problem mit den dummy-Deskriptor. Hier finden Sie eine echte Beispiel für eine solche Struktur.
Außerdem haben die Module in einem Ordner und die Abhängigkeiten in einen anderen Ordner Sie können eine assembly-descriptor wie diese:
mvn clean package
ist alles, was Sie brauchen.Ich denke, die post So Montieren Sie den Multi-Modul-Projekt mit Maven könnte die Antwort auf Ihre Frage mit einem Beispiel.
Meine Antworten zu deinen Fragen:
1) sollten Sie die Assembly-plugin in das übergeordnete pom in den bauen und pluginManagement tags wiederverwenden es in den Modulen; die post bereits erwähnt, ist ein gutes Beispiel dafür, wie es zu tun. Sie können auch nehmen einen Blick auf 8.6 Best-Practice Kapitel, Thema 8.6.2, der online-Buch "Maven: The Complete Reference'.
2) Die Ausschluss tag schwierig sein könnte. Wieder, nehmen Sie einen Blick auf 8.5 Kontrolle der Inhalte einer Assembly Kapitel im online-Buch "Maven: The Complete Reference'. Zum Beispiel das Unterthema 8.5.4, über dependencySets erwähnt, wie Sie zur Feineinstellung Abhängigkeit beinhaltet und schließt für dependencySets; wieder, das Unterthema 8.5.5, jetzt über moduleSets, zeigt, wie es in diesem Zusammenhang.