2010-09-15 14 views
7

Projemde yürütülebilir dosya ve dizinlerin yanı sıra çeşitli yapılandırma dosyaları ve dizinleri içeren dağıtılabilir bir zip dosyası oluşturmaya çalışıyorum. Maven derleme eklentisinde, çalıştırılabilir jar'ı tam bağımlılıklarla nasıl oluşturacağımı buldum. Bununla birlikte, yapıldıktan sonra kavanozun etrafındaki zip dosyasını nasıl oluşturacağımı anlayamadım. İdeal olarak, kavanozu zaten doğru dosyalara ve alt dizinlere sahip olan bir dizine taşımak istiyorum, ardından tüm şeyi bir kerede sıkıştırın. Bunu yapmanın bir yolu var mı?Bağımlılıkları olan bir çalıştırılabilir jar içeren bir zip dosyası oluşturmak için Maven'i kullanma

düzenleme:

Şimdi kavanoz binayı ve ilkel zip yanı var. Benim derleme dosyası şöyle görünür:

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

Böyle yapılandırma dosyaları veya kabuk komut dosyaları gibi ben gerekir diğer dosyalar da dahil olmak üzere rahat hissediyorum. Kalan birkaç sorum var. Zip içinde boş dizinler nasıl oluşturabilirim? Ayrıca, üretilen dosyanın adını nasıl değiştiririm?

Yardımın için teşekkürler!

cevap

5

İlk olarak, bir executable JAR oluşturmak için Maven JAR eklentisini kullanın.

Sonra da all dependencies (sonunda uygulamayı başlatır bir run.bat/run.sh dosyayı ekleyebilirsiniz) ve gerekli tüm dosyaları içerecek şekilde montajını yapılandırın.

Nihayet

, pom.xml içinde paket hedefine montaj oluşturma bağlamak:

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

Bu şekilde, sadece projenizi derlemek için, örneğin bir Maven komut mvn clean install çalıştırmanız gerekir ve daha sonra oluşturur ZIP paketi.

Şu Verilerinizi İlişkin Mevcut assembly.xml ve pom.xml ...


Edit

cevabım ihtiyaçlarınızı uymuyorsa ve siz de verebilir eğer

sorunuzu güncellemek için tereddüt etmeyin update:

Derlemenin boş bir dizin oluşturmanıza izin vereceğini sanmıyorum. Bir fikir boş bir dosya koymak (veya örneğin readme.txt) ve dizini son postaya dahil etmektir. Örneğin benim projede, bir logs/ dizin olmasını istiyorsanız, bu yüzden sadece bir readme.txt dosyayı içeren Projemdeki bir logs/ dizin var:

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

oluşturulan ZIP adı için bunu belirtebilirsiniz pom.xml yılında: doğru isem

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

, montaj bu adını kullanacak, assembly.xml dosyasında tanımlanan ID ekleyin ve belirtilen biçimde adapte öneki kullanır.

+0

Teşekkürler, buna dayanarak biraz çalıştım ve biraz ilerleme kaydettim. Sonra tekrar sıkıştım. Baska öneri? – Zoe

+0

@ZoeGagnon Cevabımı güncelledim. – romaintaz

+0

Teşekkür ederim. Cevabınız harika ve çok faydalı. – Zoe

İlgili konular