web-dev-qa-db-fra.com

Maven - <serveur /> dans settings.xml

J'utilise Tomcat-maven-plugin pour déployer ma guerre sur un serveur. Ce que je dois faire, c'est le configurer comme ceci dans mon pom.xml:

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

Mais alors je veux évidemment garder ces paramètres dans un endroit différent puisque je travaille sur mon ordinateur, mais il y a aussi une mise en scène et un serveur en direct où les paramètres du serveur sont différents.

Utilisons donc le .m2/settings.xml:

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

Maintenant, changez le pom.xml:

<configuration>
    <server>local_Tomcat</server>
</configuration>

Mais où mettre l'URL du serveur? Il n'y a pas de place pour cela dans le fichier settings.xml sous la balise serveur! Peut-être comme ça?

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

<activeProfiles>
   <activeProfile>Tomcat-config</activeProfile>
</activeProfiles>

..et utilisez la propriété $ {Tomcat.url}.

Mais alors la question est, pourquoi utiliser la balise serveur dans settings.xml du tout? Pourquoi ne pas utiliser également les propriétés du nom d'utilisateur et du mot de passe? Ou y a-t-il une place pour l'URL dans l'URL des paramètres, donc je n'ai pas à utiliser les propriétés?

27
Balázs Németh

Tout d'abord, laissez-moi vous dire que profiles est l'une des fonctionnalités les plus puissantes de Maven.

Créez d'abord un profil dans votre pom.xml qui ressemble à ceci:

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

Puis dans votre ~/.m2/settings.xml ajout de fichier servers entrées comme ceci:

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

Configurez votre plugin build comme ceci:

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

Cela permettra à votre Tomcat-localhost profil par défaut et vous permet de vous y déployer avec un simple mvn clean package Tomcat:deploy.

Pour déployer sur d'autres cibles, configurez un nouveau <server/> entrée dans settings.xml avec les informations d'identification appropriées. Ajoutez un nouveau profile mais laissez le <activation/> strophe et configurez-la pour pointer vers les détails appropriés.

Ensuite, pour l'utiliser mvn clean package Tomcat:deploy -P [profile id] où le [profile id] est le nouveau profil.

La raison pour laquelle les informations d'identification sont définies dans le settings.xml est parce que votre nom d'utilisateur et votre mot de passe doivent être secrets dans la plupart des cas, et il n'y a aucune raison de s'écarter de la manière standard de configurer les informations d'identification du serveur auxquelles les gens devront s'adapter.

30
user177800

settings.xml

<settings>
  <servers>
    <server>
        <id>company.jfrog.io</id>
        <username>user-name</username>
        <password>user-password</password>
    </server>   
  </servers>
</settings>

pom.xml

<repositories>
    <repository>
        <id>company.jfrog.io</id>
        <url>https://company.jfrog.io/company/release</url>
    </repository>
</repositories>

Mettez settings.xml à

c:/Users/user-name/.m2/settings.xml (Pour les fenêtres),

~/.m2/settings.xml (pour Linux).

company.jfrog.io peut être n'importe quel identifiant, mais il doit être le même dans settings.xml et pom.xml.

Cela fonctionne pour Maven 3.

2
v.ladynev