2010-11-17 14 views
15

İşte elde etmek çalışıyorum ne - bir dist dizini (veya bir zip dosyası) şöyle görünür: Temeldeayrılmış dış kaynak ve bağımlılıkları ile dist dir içine bir kavanoz Packaging

dist/ 
|-- application-1.0.jar 
|-- conf/ 
    |-- application.properties 
    |-- log4j.properties 
|-- lib/ 
    |-- *.jar 

:

application.properties b böylece bir çalıştırılabilir kavanoz, otomatik olarak bir kavanoz ile paketlenmiş olmaktan src/main/resources hariç tutmak istediğiniz
  • (manifest uygun sınıf) ile üretilir
    • E
    • ben paket faza bağlı eklentileri ile bir profili kullanarak bir çözüm geldi

    lib/ dizinde dış bağımlılıkları istiyorum değiştirilmiş, ancak olması daha iyi bir çözüm montaj eklentisi kullanarak ki? ve maven-montaj-eklentisimaven-kavanoz-eklentisi:

  • cevap

    4

    Bunu gerçekleştirmek için iki eklentileri kullanmak gerekir.

    Faydalı pom.xml örnekleri:

    (Ayrı dizine kullanıcı düzenlenebilir özellikleri dosyaları ayırmak için tavsiye ederim, ama bir olduğunu tat konusu.)

    Numune montaj konfigürasyonu, başlamak için:

    <assembly> 
        <id>dist</id> 
        <formats> 
        <format>zip</format> 
        </formats> 
        <includeBaseDirectory>true</includeBaseDirectory> 
        <baseDirectory>dist</baseDirectory> 
        <dependencySets> 
        <dependencySet> 
         <outputDirectory>lib</outputDirectory> 
         <scope>runtime</scope> 
        </dependencySet> 
        </dependencySets> 
        <fileSets> 
        <fileSet> 
         <directory>src/conf</directory> 
         <outputDirectory>conf</outputDirectory> 
        </fileSet> 
        <fileSet> 
         <directory>src/run</directory> 
         <outputDirectory></outputDirectory> 
         <excludes> 
         <exclude>*.sh</exclude> 
         </excludes> 
        </fileSet> 
        </fileSets> 
        <files> 
        <file> 
         <source>src/run/run.sh</source> 
         <outputDirectory></outputDirectory> 
         <fileMode>0755</fileMode> 
        </file> 
        </files> 
    </assembly> 
    
    +0

    Serin, ama aynı zamanda kavanoz yürütülebilir, manifest sınıf yolunu ayarlamak ve jarse özellikleri dosyasını hariç .. – brasskazoo

    +0

    zaten JAR eklenti, montaj eklentisi ile ilgisi bir şey meselesi. Sanırım bunu zaten yapıyorsun, değil mi? Pom.xml'inizden alakalı bölümleri sorunuza ekleyecekseniz yardımcı olacaktır. –

    +0

    , JAR'yi çalıştırılabilir hale getirin ve manifest sınıfını ayarlayın: http://maven.apache.org/shared/maven-archiver/examples/classpath.html, özellikleri hariç tutun: http://maven.apache.org/plugins/maven-jar- eklenti/usage.html –

    6

    çözüm montaj eklentisi birkaç bölümden oluşur kullanarak:

    pom kavanoz eklentisi ( maven-jar-plugin) yapılandırılması ve montaj eklentisi yapılandırma işlemlerini içeren
    • (maven-assembly-plugin).
    • Maven'in paketleme aşamasında, uygulama kavanozunu oluşturmak için kavanoz eklentisi denir.
    • Ardından, derleme eklentisi çalıştırılır ve oluşturulan jar, kaynaklar ve bağımlılıklar ile derleme dosyası (distribution-zip.xml) tarafından tanımlanan bir zip dosyasına birleştirilir. pom olarak

    yapılandırmak eklentileri:

    <assembly> 
        <id>dist</id> 
        <formats> 
         <format>zip</format> 
        </formats> 
    
        <includeBaseDirectory>true</includeBaseDirectory> 
    
        <dependencySets> 
         <dependencySet> 
          <!--Include runtime dependencies--> 
          <outputDirectory>lib</outputDirectory> 
          <scope>runtime</scope> 
         </dependencySet> 
        </dependencySets> 
    
        <fileSets> 
         <fileSet> 
          <!--Get the generated application jar--> 
          <directory>${project.build.directory}</directory> 
          <outputDirectory>/</outputDirectory> 
          <includes> 
           <include>*.jar</include> 
          </includes> 
         </fileSet> 
         <fileSet> 
          <!--Get application resources--> 
          <directory>src/main/resources</directory> 
          <outputDirectory>conf</outputDirectory> 
         </fileSet> 
         <fileSet> 
          <!--Get misc user files--> 
          <directory>${project.basedir}</directory> 
          <outputDirectory>/</outputDirectory> 
          <includes> 
           <include>README*</include> 
           <include>LICENSE*</include> 
           <include>NOTICE*</include> 
          </includes> 
         </fileSet>  
        </fileSets> 
    </assembly> 
    

    : (Neeme Praks sayesinde birlikte) montaj dosyasının distribution-zip.xml ait

    <build> 
        <plugins> 
         <plugin> 
          <artifactId>maven-jar-plugin</artifactId> 
          <version>2.2</version> 
          <configuration> 
           <archive> 
            <!-- Make an executable jar, adjust classpath entries--> 
            <manifest> 
             <addClasspath>true</addClasspath> 
             <classpathPrefix>./lib/</classpathPrefix> 
             <mainClass>com.acme.KillerApp</mainClass> 
            </manifest> 
            <!--Resources will be placed under conf/--> 
            <manifestEntries> 
             <Class-Path>./conf/</Class-Path> 
            </manifestEntries> 
           </archive> 
           <!--exclude the properties file from the archive--> 
           <excludes> 
            <exclude>*.properties</exclude> 
           </excludes> 
          </configuration> 
         </plugin> 
    
         <plugin> 
          <artifactId>maven-assembly-plugin</artifactId> 
          <version>2.2-beta-5</version> 
          <configuration> 
           <descriptors> 
            <descriptor>${basedir}/assembly/distribution-zip.xml</descriptor> 
           </descriptors> 
          </configuration> 
          <executions> 
           <execution> 
            <phase>package</phase> 
            <goals> 
             <goal>single</goal> 
            </goals> 
           </execution> 
          </executions> 
         </plugin> 
    ... 
    

    içeriği oluşturulan kavanoz, kaynak ve bağımlılıkları birleştirir Ortaya çıkan dağıtılabilir zip dosyası target/killer-app-1.0-dist.zip gibi yaratılmıştır!

    İlgili konular