2015-03-08 12 views
12

chcę połączyć moje kodu źródłowego w słoju ze wszystkimi zależnościami, jak również pakiet to aż do pliku ZIP wraz z innymi plikami. Jestem w stanie stworzyć jedną słoik ze wszystkimi zależnościami, a także plik ZIP, ale nie mogę połączyć tych dwóch.Łącząc Jar-z zależnościami i plik ZIP za pomocą montażu wtyczki Maven

I ostatecznie chcemy następującą strukturę katalogów w pliku zip:

ładowarka/bin/shellscript.sh

ładowarka/lib/JAR-ze-dependencies.jar

ładowarka/appname/config/config.xml

Oto wyciąg z mojego pliku pom:

<plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <mainClass>fully.qualified.MainClass</mainClass> 
        </manifest> 
       </archive> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <descriptors> 
        <descriptor>src/main/assembly/assembly.xml</descriptor> 
       </descriptors> 
       </configuration> 
     </plugin> 

Oto wyciąg z mojego zespołu

<assembly> 
    <id>bin</id> 
    <!-- Specifies that our binary distribution is a zip package --> 
    <formats> 
     <format>zip</format> 
    </formats> 

    <baseDirectory>SpreadsheetLoaderApp</baseDirectory> 

    <fileSets> 
     <fileSet> 
      <directory>corporatebondpurchases</directory> 
      <outputDirectory>${basedir}/corporatebondpurchases/config</outputDirectory> 
      <includes> 
       <include>*.xml</include> 
       <include>*.properties</include> 
      </includes> 
     </fileSet> 
     <fileSet> 
      <directory>corporatebondpurchases</directory> 
      <outputDirectory>${basedir}/bin</outputDirectory> 
      <includes> 
       <include>*.sh</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

Oto wyjście z części kompilacji:

[INFO] --- maven-assembly-plugin:2.4:single (default-cli) @ SpreadsheetLoader --- 
[INFO] Reading assembly descriptor: src/main/assembly/assembly.xml 
[INFO] Building zip: C:\Software\SpringSTS\workspace\SpreadsheetLoader\target\SpreadsheetLoader-0.0.1-SNAPSHOT-bin.zip 
[INFO] Building jar: C:\Software\SpringSTS\workspace\SpreadsheetLoader\target\SpreadsheetLoader-0.0.1-SNAPSHOT-jar-with-dependencies 

ten uda się tworząc jedną Jar pod docelowym, jak również plik ZIP (choć z pełnymi ścieżkami raczej niż ścieżki względne). Chcę tylko, aby plik Jar był częścią pliku zip.

EDIT:

Po zbadaniu różnych blogach udało mi się uzyskać tej pracy przy użyciu następujących POM i montażu pliki

<build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <executions> 
      <execution> 
       <id>jar-with-dependencies</id> 
       <phase>package</phase> 
       <goals> 
        <goal>single</goal> 
       </goals> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
        <archive> 
         <manifest> 
          <mainClass>fully.qualified.MainClass</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </execution> 
      <execution> 
       <id>dist</id> 
       <phase>package</phase> 
       <goals> 
        <goal>single</goal> 
       </goals> 
       <configuration> 
        <descriptors> 
         <descriptor>src/main/assembly/assembly.xml</descriptor> 
        </descriptors> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

a odpowiedni plik montaż ...

<assembly> 
    <id>dist</id> 
    <!-- Specifies that our binary distribution is a zip package --> 
    <formats> 
     <format>zip</format> 
    </formats> 

    <includeBaseDirectory>true</includeBaseDirectory> 
    <baseDirectory>SpreadsheetLoader</baseDirectory> 

    <files> 
     <file> 
      <source>target/${project.artifactId}-${project.version}-jar-with-dependencies.jar</source> 
      <outputDirectory>lib</outputDirectory> 
     </file> 
    </files> 

    <fileSets> 
     <fileSet> 
      <directory>applicationbuild/${buildname}</directory> 
      <outputDirectory>${buildname}/config</outputDirectory> 
      <includes> 
       <include>*.xml</include> 
       <include>*.properties</include> 
      </includes> 
     </fileSet> 
     <fileSet> 
      <directory>applicationbuild/${buildname}</directory> 
      <outputDirectory>bin</outputDirectory> 
      <includes> 
       <include>*.sh</include> 
      </includes> 
      <lineEnding>unix</lineEnding> 
      <fileMode>0755</fileMode> 
     </fileSet> 
     <fileSet> 
      <directory>./</directory> 
      <outputDirectory>logs</outputDirectory> 
      <excludes> 
       <exclude>*/**</exclude> 
      </excludes> 
     </fileSet> 
     <fileSet> 
      <directory>./</directory> 
      <outputDirectory>${buildname}/sourcedata</outputDirectory> 
      <excludes> 
       <exclude>*/**</exclude> 
      </excludes> 
     </fileSet> 
    </fileSets> 
</assembly> 

To daje mi piękny prostą strukturę katalogów dla celów programowych. Moim głównym źródłem informacji pochodzi z następującej strony:

http://www.drawbackz.com/stack/175442/maven-assembly-plugin-how-to-create-nested-assemblies.html

Dzięki

Odpowiedz

4

Jestem dość zadowolony z powyższego wyniku. Jest to jednak moja pierwsza próba użycia Mavena. Jeśli ktoś ma lepszy sposób robienia tego, chętnie skorzystałbym z porady.

+1

polecam wyciąć prawdziwą odpowiedź od Twojego pytania i wkleić go w tym poście i oznaczyć go jako zaakceptowanej odpowiedzi –

Powiązane problemy