2011-05-25 17 views
31

tengo tres perfiles en mi pom.xml para nuestra aplicación ...experta - cómo cambiar el nombre de la salida .war archivo basado en el nombre del perfil en uso

  1. dev (para su uso en una desarrollador)
  2. qa (para usar en nuestro servidor qa interno)
  3. prod (producción).

Cuando ejecutamos la construcción de maven, los tres perfiles muestran un archivo war con el mismo nombre. Me gustaría dar salida a $profilename-somearbitraryname.war

¿Alguna idea?

+0

recomendaría el uso de perfiles de primavera ('org.springframework.context .support.PropertySourcesPlaceholderConfigurer') para las variables que cambian para la aplicación en función del entorno. De esta forma, puede construir una vez y volver a implementarla nuevamente en el siguiente entorno. Sin embargo, esto podría no ser relevante para su caso. – worldsayshi

Respuesta

56

Se ha respondido correctamente:

<profiles> 
    <profile> 
     <id>dev</id> 
     <properties> 
      <rp.build.warname>dev</rp.build.warname> 
     </properties> 
    </profile> 
    <profile> 
     <id>qa</id> 
     <properties> 
      <rp.build.warname>qa</rp.build.warname> 
     </properties> 
    </profile> 
    <profile> 
     <id>prod</id> 
     <properties> 
      <rp.build.warname>prod</rp.build.warname> 
     </properties> 
    </profile> 
</profiles> 

pero hay una manera más sencilla para redefinir nombre GUERRA:

<build> 
    <finalName>${rp.build.warname}-somearbitraryname</finalName> 
    <!-- ... --> 
</build> 

Sin maven-war-plugin se necesita.

+2

Bonito consejo, pero los perfiles de Maven docs no deben usarse para producir un resultado diferente. De lo contrario, como he visto, las compilaciones se vuelven innecesariamente complejas. –

24

La respuesta era simple ...

definir una propiedad en cada perfil como esto ...

<profile> 
    <id>qa</id> 
    <properties> 
     <rp.build.warname>ourapp-qa</rp.build.warname> 
    </properties> 
</profile> 

A continuación, añadir esto a sus complementos ...

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1.1</version> 
    <configuration> 
     <packagingExcludes>WEB-INF/web.xml</packagingExcludes> 
     <warName>${rp.build.warname}</warName> 
    </configuration> 
</plugin> 
+2

Nota: Esta configuración ya no está disponible en maven-war-plugin 3.0.0. – Barett

0

En experta debe utilizar <bundleFileName> en el <module>

Debe seguir este enlace para asegurar que sus módulos se rewritted: http://maven.apache.org/plugins/maven-ear-plugin/examples/customizing-a-module-filename.html

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-ear-plugin</artifactId> 
       <version>2.10.1</version> 
       <configuration> 
       [...] 
        <modules> 
         <ejbModule> 
          <groupId>artifactGroupId</groupId> 
          <artifactId>artifactId</artifactId> 
          <bundleFileName>anotherName-1.2.3.jar</bundleFileName> 
         </ejbModule> 
        </modules> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
Cuestiones relacionadas