2012-07-31 4 views
17

Ecco la pom.xmlCome configurare Maven: assemblaggio percorso principale nel vaso

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.springframework.webflow</groupId> 
    <artifactId>spring-js-resources-thin</artifactId> 
    <version>2.2.1.RELEASE</version> 
    <name>Spring js lib</name> 
    <description>Spring javascript library without dojo</description> 
    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.2.1</version> 
       <configuration> 
        <descriptors> 
         <descriptor>src/main/assembly/assembly.xml</descriptor> 
        </descriptors> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

e qui è il assembly.xml

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>/</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

Il problema è, ogni volta che apro il generata file jar (spring-js-resources-thin-2.2.1.RELEASE-js-jar.jar), la cartella radice viene sempre chiamata come artifactid-version (spring-js-resources-thin-2.2.1.RELEASE), quindi il META-INF.

Mi chiedo comunque che sia possibile creare il file jar con il nome file artifactid-version.jar, ma SENZA lo artifactid-version nel percorso classe, proprio come ogni jar nel repository Maven. Penso che ci dovrebbe essere un'opzione o un modo per nominare il <outputDirectory>.

+1

Hai provato a utilizzare 'maven-jar-plugin' per la creazione di jar? –

risposta

39

dovete dire Maven-assemblaggio-plugin non includere la directory di base all'interno dell'archivio che può essere ottenuta utilizzando la seguente:

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>.</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

E il suggerimento sull'utilizzo di Maven-jar-plugin è molto bene, perché sembra un po 'che stai usando male il plugin maven-assembly-plugin.

Nelle versioni più recenti di maven-assembly-plugin è necessario . come cartella principale. Se usi / riceverai un avviso.

+0

Sì! Questo è esattamente ciò di cui ho bisogno. Grazie. – Dreamer

3

Aggiungere l'elemento all'assieme in questo modo.

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 

    <baseDirectory>myBaseDir</baseDirectory> 

    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>/</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

Se si accende il <includeBaseDirectory> fuori allora il vostro archivio non avrà nessuna radice. Quindi dipende da cosa vuoi. Preferisco i miei file zip, ad esempio, per avere una directory di base in modo da non inquinare inavvertitamente una directory all'interno se si dimentica di creare la directory e cd in essa prima di decomprimere. Molto più conveniente anche.