2010-09-15 8 views
7

Ich versuche, eine verteilbare Zip meines Projekts zu erstellen, die mehrere Konfigurationsdateien und Verzeichnisse enthält, sowie die ausführbare Jar meines Projekts. Im Maven-Assembly-Plug-In habe ich herausgefunden, wie man das ausführbare jar mit vollen Abhängigkeiten erzeugt. Ich konnte jedoch nicht herausfinden, wie man die Zip-Datei um das Glas herum erstellt, nachdem es gemacht wurde. Idealerweise möchte ich das jar in ein Verzeichnis verschieben, das bereits die richtigen Dateien und Unterverzeichnisse hat, und dann das Ganze auf einmal zippen. Gibt es eine Möglichkeit, dies zu tun?Verwenden von Maven zum Erstellen einer Zip-Datei mit einem ausführbaren Jar mit Abhängigkeiten

edit:

Ich habe jetzt das Glas Gebäude, und eine rudimentäre zip auch. Meine Baugruppendatei sieht wie folgt aus:

<assembly> 
    <id>financials-import-server</id> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <dependencySets> 
     <dependencySet> 
     </dependencySet> 
    </dependencySets> 
    <files> 
     <file> 
      <source>target/import-server-1.0.0-SNAPSHOT.jar</source> 
      <destName>service.jar</destName> 
      <outputDirectory>/</outputDirectory> 
     </file> 
    </files> 
</assembly> 

Ich fühle mich wohl mit den anderen Dateien, die ich würde, wie Konfigurationsdateien oder Shell-Skripte müssen. Ich habe noch ein paar Fragen. Wie würde ich leere Verzeichnisse innerhalb der Zip erstellen? Wie ändere ich auch den Namen der produzierten Datei?

Danke für die Hilfe!

Antwort

5

Verwenden Sie zuerst das Maven JAR-Plugin, um eine executable JAR zu erstellen.

Konfigurieren Sie dann Ihre Assembly, um alle benötigten Dateien einzuschließen (eventuell können Sie eine run.bat/run.sh Datei hinzufügen, die die Anwendung startet), und auch all dependencies.

Schließlich binden die Montage Schöpfung zu Ihrem Paket Ziel in der pom.xml:

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.2-beta-5</version> 
     <configuration> 
     <descriptors> 
      <descriptor>/path/to/my-assembly.xml</descriptor> 
     </descriptors> 
     </configuration> 
     <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
      <goal>single</goal> 
      </goals> 
     </execution> 
     </executions> 
     ... 

Auf diese Weise werden Sie müssen einfach nur ein Maven Befehl mvn clean install zum Beispiel ausgeführt werden, Ihr Projekt zu kompilieren, und erstellt dann die ZIP-Paket.

Zögern Sie nicht, Ihre Frage zu aktualisieren, wenn meine Antwort nicht Ihre Bedürfnisse passt, und Sie können auch Ihre aktuelle assembly.xml und pom.xml ...


bearbeiten

Bezüglich Ihrer geben Update:

Ich glaube nicht, dass die Assembly Sie ein leeres Verzeichnis erstellen lassen wird. Eine Idee ist es, eine leere Datei (oder eine readme.txt zum Beispiel) zu setzen und das Verzeichnis in die endgültige ZIP-Datei aufzunehmen. Zum Beispiel in meinem Projekt möchte ich ein logs/ Verzeichnis haben, so habe ich ein logs/ Verzeichnis in meinem Projekt, das nur eine readme.txt Datei enthält:

<fileSets> 
    <fileSet> 
     <directory>../my-package/logs</directory> 
     <outputDirectory>logs/</outputDirectory> 
    </fileSet> 
</fileSets> 

für den Namen des ZIP erstellt haben, können Sie es angeben im pom.xml:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.2-beta-4</version> 
      <configuration> 
       <descriptors> 
        <descriptor>my-assembly.xml</descriptor> 
       </descriptors> 
       <finalName>TheName</finalName> 

Wenn ich richtig ist, wird die Versammlung diese Namen verwenden, fügen Sie die ID in der assembly.xml-Datei definiert und verwendet den angegebenen in das Format angepasst Präfix.

+0

Danke, ich arbeitete einige basierend auf diesem, und machte ein paar Fortschritte. Dann bin ich wieder stecken geblieben. Irgendwelche Vorschläge? – Zoe

+0

@ZoeGagnon Ich habe meine Antwort aktualisiert. – romaintaz

+0

Danke. Ihre Antwort ist fantastisch und sehr hilfreich. – Zoe

Verwandte Themen