2012-07-31 32 views
17

Aquí es el pom.xmlCómo configurar Maven: ruta raíz de ensamblaje en el frasco

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

y aquí está la 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> 

El problema es que cada vez que abro la generada archivo jar (spring-js-resources-thin-2.2.1.RELEASE-js-jar.jar), la carpeta raíz siempre se denomina artifactid-version (spring-js-resources-thin-2.2.1.RELEASE), y luego META-INF.

Me pregunto hay de todos modos que puedo crear el archivo JAR con el nombre del archivo artifactid-version.jar, pero sin la artifactid-version en la ruta de clase, al igual que cada frasco en el repositorio de Maven. Creo que debería haber una opción o una forma de nombrar el <outputDirectory>.

+1

¿Ha intentado utilizar 'maven-jar-plugin' para la creación de jar? –

Respuesta

39

usted tiene que decir maven-montaje-plugin no incluir el directorio base dentro del archivo que se puede lograr mediante el uso de lo siguiente:

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

Y la sugerencia sobre el uso de Maven-jar-plugin es muy bueno, porque parece un poco que estás haciendo un uso indebido del plugin maven-assembly.

En las versiones más recientes de maven-assembly-plugin debe . como la carpeta raíz. Si usa /, recibirá una advertencia.

+0

¡Sí! Eso es exactamente lo que necesito. Gracias. – Dreamer

3

Agregue el elemento al conjunto como tal.

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

Si gira el <includeBaseDirectory> fuera entonces su archivo no tendrá ninguna raíz. Entonces depende de lo que quieras. Prefiero mis archivos zip, por ejemplo, tener un directorio base para que no contamine accidentalmente un directorio en el que se encuentre si olvida crear el directorio y el CD en él antes de descomprimir. Mucho más conveniente también.

Cuestiones relacionadas