homepage - maven tomcat plugin example
Maven-<servidor/> en settings.xml (1)
Antes que nada déjeme decir que los profiles
son una de las características más poderosas de Maven.
Primero haga un perfil en su pom.xml
que se vea así:
<profiles>
<profile>
<id>tomcat-localhost</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<tomcat-server>localhost</tomcat-server>
<tomcat-url>http://localhost:8080/manager</tomcat-url>
</properties>
</profile>
</profiles>
Luego, en su archivo ~/.m2/settings.xml
agregue entradas de servers
como esta:
<servers>
<server>
<id>localhost</id>
<username>admin</username>
<password>password</password>
</server>
</servers>
Configure su plugin de build
esta manera:
<plugin>
<!-- enable deploying to tomcat -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<server>${tomcat-server}</server>
<url>${tomcat-url}</url>
</configuration>
</plugin>
Esto habilitará su perfil tomcat-localhost
de manera predeterminada y le permitirá implementarlo con un simple mvn clean package tomcat:deploy
.
Para implementarlo en otros destinos, configure una nueva entrada <server/>
en settings.xml
con las credenciales apropiadas. Agregue un nuevo profile
pero deje de lado la stanza <activation/>
y configúrelo para que apunte a los detalles apropiados.
Luego, para usarlo, haga mvn clean package tomcat:deploy -P [profile id]
donde [profile id]
es el nuevo perfil.
La razón por la cual las credenciales se configuran en settings.xml
es porque su nombre de usuario y contraseña deben ser secretos en la mayoría de los casos, y no hay razón para desviarse de la forma estándar de configurar las credenciales del servidor a las que las personas tendrán que adaptarse.
Utilizo tomcat-maven-plugin para desplegar mi guerra en un servidor. Lo que tengo que hacer es configurarlo así en mi pom.xml:
<configuration>
...
<url>http://localhost/manager</url>
<username>admin</username>
<password>admin</password>
...
</configuration>
Pero, obviamente, quiero mantener esta configuración en un lugar diferente ya que trabajo en mi computadora, pero luego hay una puesta en escena y un servidor en vivo, así como la configuración del servidor es diferente.
Así que vamos a usar el .m2/settings.xml
:
<servers>
<server>
<id>local_tomcat</id>
<username>admin</username>
<password>admin</password>
</server>
</servers>
Ahora cambia el pom.xml:
<configuration>
<server>local_tomcat</server>
</configuration>
¿Pero dónde poner la URL del servidor? ¡No hay lugar para eso en la configuración.xml debajo de la etiqueta del servidor! Tal vez asi
<profiles>
<profile>
<id>tomcat-config</id>
<properties>
<tomcat.url>http://localhost/manager</tomcat.url>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>tomcat-config</activeProfile>
</activeProfiles>
..y usa la propiedad $ {tomcat.url}.
Pero entonces la pregunta es, ¿por qué usar la etiqueta de servidor en settings.xml
? ¿Por qué no usar las propiedades para el nombre de usuario y la contraseña también? ¿O hay un lugar para la URL también en la URL de configuración para que no tenga que usar las propiedades?