2011-07-01 29 views
26

Uso tomcat-maven-plugin para implementar mi guerra en un servidor. Lo que tengo que hacer es configurarlo como este en mi pom.xml:Maven - <server/> en settings.xml

<configuration> 
... 
    <url>http://localhost/manager</url> 
    <username>admin</username> 
    <password>admin</password> 
... 
</configuration> 

Pero entonces, obviamente, desea mantener esta configuración en un lugar diferente ya que trabajo en mi equipo, pero entonces hay una puesta en escena y un servidor en vivo también donde la configuración del servidor es diferente.

Así que vamos a utilizar 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 colocar el URL del servidor? ¡No hay lugar para eso en settings.xml debajo de la etiqueta del servidor! Tal vez así?

<profiles> 
    <profile> 
    <id>tomcat-config</id> 
     <properties> 
    <tomcat.url>http://localhost/manager</tomcat.url> 
     </properties> 
    </profile> 
</profiles> 

<activeProfiles> 
    <activeProfile>tomcat-config</activeProfile> 
</activeProfiles> 

..y utiliza la propiedad $ {tomcat.url}.

Pero entonces la pregunta es, ¿por qué utilizar la etiqueta del servidor en settings.xml en absoluto? ¿Por qué no usar 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 no tener que usar propiedades?

Respuesta

29

Primero déjame decir, profiles son una de las características más potentes de Maven.

En primer lugar hacer un perfil en su pom.xml que tiene este aspecto:

<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> 

A continuación, en el archivo de ~/.m2/settings.xml añadir servers entradas de la siguiente manera:

<servers> 
     <server> 
      <id>localhost</id> 
      <username>admin</username> 
      <password>password</password> 
     </server> 
    </servers> 

configurar su build complemento como esto :

<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 activará su perfil tomcat-localhost de forma predeterminada y le permitirá implementarlo con un simple mvn clean package tomcat:deploy.

Para implementar en otros destinos, configure una nueva entrada <server/> en settings.xml con las credenciales apropiadas. Agregue un nuevo profile pero deje la estrofa <activation/> y configúrelo para que apunte a los detalles apropiados.

Luego de usarlo haga mvn clean package tomcat:deploy -P [profile id] donde [profile id] es el nuevo perfil. El motivo por el que las credenciales están establecidas 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 ninguna razón para desviarse de la forma estándar de configurar las credenciales del servidor a las que las personas tendrán que adaptarse.

+0

bien, gracias por hacer esto un poco más claro :) –

Cuestiones relacionadas