2015-09-16 18 views
5

Używam pluginu maven-assembly, aby utworzyć plik zip projektu podczas tworzenia projektu. To się udaje. Teraz chcę zip tylko określone katalogi w projekcie.Jak skompresować tylko określone katalogi za pomocą wtyczki do składania maven

To jest kod wtyczki w moim pom, którego użyłem wcześniej.

<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> 

Plik resource.xml wygląda następująco.

<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> 

Chcę spakować tylko niektóre katalogi projektu w maven kompilacji.

Jako przykład mam następującą strukturę folderów w projekcie.

project 

    |_directories 

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

Czego chcę, to zrobić plik zip, który zawiera tylko folder z katalogami. Podczas wyodrębniania pliku zip, który powinien zawierać tylko cztery katalogi.

Jak mogę to osiągnąć? Czy wtyczka maven-assembly wystarcza do tego, czy powinienem utworzyć mojo?

+1

Czy próbowałeś nazewnictwa katalogów, które mają wyraźnie za pomocą 'include' znaczniki? https://maven.apache.org/guides/mini/guide-assemblies.html – user1717259

+0

czy jesteś pewien, że pom.xml znajduje się w 'katalogach' nie w' projekcie' – blackbuild

Odpowiedz

10

Niewłaściwe użycie directory i outputDirectory.

directory jest ścieżką w projekcie, w którym pliki mają być spakowane są brane z (tak powinno być directories w Twoim przypadku), outputDirectory folder wewnątrz wygenerowania pliku zip, gdzie fileset to miejsce (ponieważ nie chcą katalog toplevel powinno być /):

<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>