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