La idea de Markus Lux también se puede aplicar con una solución Maven2, con la gestión de perfiles:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
</plugin>
</plugins>
...
</build>
<profiles>
<profile>
<id>env-foo1</id>
<!-- Activated when -Denv=foo1 is given as parameter. -->
<activation>
<property>
<name>env</name>
<value>foo1</value>
</property>
</activation>
<properties>
<deploy.env>xxx</deploy.env>
<tomcat.manager>http://foo1/manager</tomcat.manager>
<tomcat.manager.username>foo</tomcat.manager.username>
<tomcat.manager.password>bar</tomcat.manager.password>
</properties>
</profile>
<profile>
<id>env-foo2</id>
<!-- Activated when -Denv=foo2 is given as parameter. -->
<activation>
<property>
<name>env</name>
<value>foo2</value>
</property>
</activation>
<properties>
<deploy.env>dev</deploy.env>
<tomcat.manager>http://foo2/manager</tomcat.manager>
<tomcat.manager.username>foo</tomcat.manager.username>
<tomcat.manager.password>bar</tomcat.manager.password>
</properties>
</profile>
...
</profiles>
A continuación, sólo tendrá que ejecutar X veces el comando mvn, con el parámetro adecuado (-Denv = foo1, -Denv = foo2, ...)
Además de eso, puede mejorar esta solución por nosotros ing la característica de matriz del servidor de integración continua Hudson. Di una breve explicación sobre esta característica here.
Básicamente, usted solo define un trabajo Maven2 "normal" en Hudson, y con la función Matrix, puede pedirle a Hudson que ejecute este trabajo varias veces, una por entorno. En otras palabras, se crea el trabajo de Hudson, y luego se define el "eje del medio ambiente", con todos los valores posibles para el parámetro env :
Hudson entonces generar la aplicación con el comando mvn y con el parámetro -De nv = foo1 .Una vez esta construcción está terminado, se va a construir la misma aplicación pero con el parámetro -Denv = foo2, y así sucesivamente ...
De esta manera, Hudson desplegará su aplicación en cada entornos. ..
espero que mi solución ayudará a alcanzar sus objetivos ...
Santa mierda, esto es potencialmente muy útil, ya que Hudson es exactamente lo que estaba buscando usando esto en .... – cgp
Lo curioso es que esto es similar a lo que sugería el enlace que di, pero no está precisamente claro. No puedo esperar a probarlo. – cgp
¿Hay alguna manera de hacerlo sin tener que llamar a Maven X veces? me parece que la compilación de nuevo solo para implementar consume mucho tiempo, además de que puede llevar a implementaciones inconscientes en un clúster si hubo un cambio nuevo comprometido con el código durante estas compilaciones – maverick