2011-02-08 14 views
15

Nuestra política es construir solo 1 jar desplegable. todas las configuraciones específicas del entorno se mantienen separadas, y las construimos juntas a la vez. de modo que bajo nuestro proceso Ant actual, tenemos un archivo de propiedades para cada entorno, lo repitamos y creamos un conjunto de archivos de configuración para cada entorno.Maven Crear múltiples perfiles de una sola vez

En mi XML de POM actual, puedo construir solo un perfil proporcionado en la línea de comandos. ¿Es posible lograrlo a través de Maven?

Éstos son algunos de la parte pertinente del pom.xml

<!-- Define profiles here and make DEV as default profile --> 
<profiles> 

    <!-- dev Profile --> 
    <profile> 
     <id>dev</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
    </profile> 

    <!-- qa Profile --> 
    <profile> 
     <id>qa</id> 
     <properties> 
      <env>qa</env> 
     </properties> 
    </profile> 

    <!-- prod Profile --> 
    <profile> 
     <id>prod</id> 
     <properties> 
      <env>prod</env> 
     </properties> 
    </profile> 

</profiles> 
... 


<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.4.3</version> 

    <executions> 
     <execution> 

      <phase>validate</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 

      <configuration> 

       <filters> 
        <filter>env/${env}.properties</filter> 
       </filters> 

       <outputDirectory>${project.build.directory}/config/${env} 
       </outputDirectory> 
       <resources> 
        <resource> 

         <filtering>true</filtering> 

         <directory>${basedir}/src/main/config/default 
         </directory> 
         <includes> 
          <include>*.xml</include> 
          <include>*.properties</include> 
         </includes> 
        </resource> 

.....

Gracias, Prabhjot

+0

Aquí se describe una solución para esto: https://stackoverflow.com/questions/12320322/build-multiple-artifacts-with-different-classifiers-at-once – stokito

Respuesta

19

Maven no es como la hormiga. Con hormiga, básicamente puedes hacer lo que quieras cuando quieras hacerlo. Con maven, hay un build life cycle claro y documentado, y está dirigido a construir un componente (y posiblemente unir otros artefactos a la compilación).

Lo que planea hacer es, sin embargo, construir un componente varias veces, pero con diferentes parámetros. Esto no encaja en el ciclo de vida de maven. Entonces, lo que tendrá que hacer es provocar que algún proceso externo realice la iteración y llamar a maven repetidamente con diferentes parámetros.

La forma clásica de lograr esto sería usar un script de shell, pero también puede usar el Maven Invoker para iniciar un proceso separado desde un contexto Java o Maven.

Cuestiones relacionadas