2015-09-16 4 views
5

Ich benutze Maven-Assembly-Plugin, um eine Zip-Datei des Projekts beim Erstellen des Projekts zu erstellen. Es ist erfolgreich. Jetzt möchte ich nur bestimmte Verzeichnisse im Projekt komprimieren.Zip nur bestimmte Verzeichnisse mit Maven Assembly Plugin

Dies ist der Code für das Plugin in meinem Pom, die ich zuvor verwendet habe.

<plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>make shared resources</id> 
         <goals> 
          <goal>single</goal> 
         </goals> 
         <phase>package</phase> 
         <configuration> 
          <descriptors> 
           <descriptor>resource.xml</descriptor> 
          </descriptors> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

Und die Ressource.xml-Datei ist wie folgt.

<assembly> 
    <id>resources</id> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
     <fileSet> 
      <!-- Since it bundles all the units --> 
      <directory></directory> 
      <outputDirectory>/project</outputDirectory> 
      <excludes> 
       <exclude>pom.xml</exclude> 
       <exclude>*.iml</exclude> 
       <exclude>*.jar</exclude> 
       <exclude>**/src/**</exclude> 
       <exclude>**/target/**</exclude> 
       <exclude>resource.xml</exclude> 
      </excludes> 
     </fileSet> 
    </fileSets> 
</assembly> 

Ich möchte nur einige Verzeichnisse des Projekts im Maven Build zippen.

Als Beispiel habe ich folgende Ordnerstruktur im Projekt.

project 

    |_directories 

     |_dir1 
      |_ .... 
     |_dir2 
      |_ .... 
     |_dir3 
      |_ .... 
     |_pom.xml 

Was ich will, ist Zip-Datei machen, die nur die Verzeichnisse Ordner enthalten. Beim Extrahieren meiner Zip-Datei, die nur die vier Verzeichnisse darin enthalten sollte.

Wie kann ich das erreichen? Reicht das Maven-Assembly-Plugin aus oder soll ich ein Mojo erstellen?

+1

Haben Sie versucht, die Verzeichnisse, die Sie explizit mit 'include' Tags benennen? https://maven.apache.org/guides/mini/guide-assemblies.html – user1717259

+0

Sind Sie sicher, dass sich die pom.xml in 'directories' nicht in' project' befindet – blackbuild

Antwort

10

Sie haben directory und outputDirectory missbraucht.

directory der Pfad in Ihrem Projekt ist, wo die Dateien aus genommen gezippt werden (so es directories in Ihrem Fall sein soll), outputDirectory die Ordner in der ZIP-Datei erzeugen, wobei die Dateigruppe Ort ist (da Sie nicht tun möchte das Toplevel-Verzeichnis, sollte es / sein):

<assembly> 
    <id>resources</id> 
    <formats> 
     <format>zip</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
     <fileSet> 
      <!-- Take everything inside the directories folder --> 
      <directory>directories</directory> 
      <!-- And place it inside the root of the zip file --> 
      <outputDirectory>/</outputDirectory> 
     </fileSet> 
    </fileSets> 
</assembly> 
Verwandte Themen