¿Cómo construir un proyecto maven sin versión?

81

Tengo un proyecto de maven que quiero construir sin versión.

Ahora, cuando construyo el proyecto usando maven, crea esto, commonjerseylib-1.0.warpero necesito commonjerseylib.warque se cree.

Además de eso, elimino la <version>etiqueta de pom.xmlpero aún Maven está creando warcon la versión 1.0 de forma predeterminada.

Mi pom.xml:

      <modelVersion>4.0.0</modelVersion>
      <groupId>commonjerseylib</groupId>
      <artifactId>commonjerseylib</artifactId>
      <packaging>ear</packaging>
      <name>commonjerseylib</name>
      <!--<version>1.0</version>-->

¿Cómo construirlo sin versión?

usuario1137387
fuente

Respuestas:

169

Siempre necesitará un número de versión para un proyecto, sin embargo, es posible cambiar el nombre del paquete generado (JAR, WAR, EAR, etc.) a través del <finalName>elemento en el POM.

<project>
    ...
    <build>
        ...
        <finalName>${project.artifactId}</finalName>
        ...
    </build>
    ...
</project>

o en versiones anteriores de maven:

        ...
        <finalName>${artifactId}</finalName>
        ...

Por defecto, el finalName es ${project.artifactId}-${project.version}, pero se puede cambiar a otra cosa. Esto solo afectará al nombre del paquete creado en el targetdirectorio; el nombre del archivo en el repositorio local y subido a repositorios remotos siempre tendrá un número de versión.

Consulte la documentación de referencia de POM para obtener más información.

podar
fuente
¡Eso es perfecto, claro y limpio!
Thomas
7
A partir de al menos Maven 3.0.3, $ {artifactId} está obsoleto a favor de $ {project.artifactId}.
Glenn
2
@prunge: Gracias por la respuesta. ¿Conoce alguna forma de hacerlo, ya que afecta al nombre del archivo en el repositorio local y en los repositorios remotos?
namalfernandolk
Tenga en cuenta que no funciona anular desde la línea de comando como -Dproject.build.finalName=whatever, si desea poder especificar el nombre del jar en la línea de comando, consulte stackoverflow.com/a/13877971/587365
Andrew Spencer
12

en el complemento de guerra de maven en compilación, cambio

<warName> ${artifactId} </warName>

        <build>
           ..........
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <!-- web.xml is not mandatory since JavaEE 5 -->
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <warName>${artifactId}</warName>
                </configuration>
            </plugin>
         .............
       <build>
kuhajeyan
fuente
0

Lo arreglé con las siguientes líneas de código en el pom

... ... $ {project.artifactId} ... ...
Shahid Hussain Abbasi
fuente