Existe-t-il un moyen simple de spécifier un autre port pour Tomcat dans le pom ou sur la ligne de commande? J'aimerais avoir plusieurs projets en cours d'exécution sur la même machine.
Je sais que ce fil est vieux mais…
Le lien vers la documentation fournie par Greg est intéressant:
port:
The port to run the Tomcat server on.
Type: int
Required: No
Expression: ${maven.Tomcat.port}
Default: 8080
L'expression est ce que maven utilise pour obtenir la valeur dans son code. Cela peut provenir d'un fichier de configuration ou de la ligne de commande.
Tu pourrais courir
mvn -Dmaven.Tomcat.port=8181 Tomcat:run-war
J'ai eu un problème similaire lorsque plusieurs petites servlets exécutaient leur phase de test d'intégration en même temps, ce qui est devenu un problème lorsque celles-ci ont été configurées pour utiliser le même port. Mais grâce à l’objectif build-helper-maven-plug-in: reserve-network-port , il est possible d’obtenir des numéros de port aléatoires disponibles. Ensuite, je peux créer une URL contenant HTTP: // LOCALHOST: [PORT]/[NOM DU SERVLET] }, qui est alimenter la classe de test Java.
Récupération du port aléatoire:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>reserve-network-port</id>
<goals>
<goal>reserve-network-port</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<portNames>
<portName>Tomcat.http.port</portName>
</portNames>
</configuration>
</execution>
</executions>
Démarrer Tomcat avec le port
<plugin>
<groupId>org.Apache.Tomcat.maven</groupId>
<artifactId>Tomcat6-maven-plugin</artifactId>
<configuration>
<port>${Tomcat.http.port}</port>
<useTestClasspath>true</useTestClasspath>
</configuration>
....
</plugin>
Envoi de l'URL au test d'intégration Java exécuté par le plug-in de sécurité intégrée
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.12.3</version>
....
<configuration>
<systemPropertyVariables>
<integration-test.url>http://localhost:${Tomcat.http.port}/${project.build.finalName}/</integration-test.url>
</systemPropertyVariables>
</configuration>
</plugin>
Code Java
public class DownloadAreaIT {
private static final String URL = System.getProperty("integration-test.url");
}
En utilisant la syntaxe donnée sur Tomcat-maven-plugin , vous pouvez directement spécifier le port:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>Tomcat-maven-plugin</artifactId> <configuration> <server>Tomcat-development-server</server> <port>9966</port> </configuration> </plugin>
Ci-dessous a travaillé pour moi:
<properties>
<maven.Tomcat.port>9090</maven.Tomcat.port>
</properties>
<plugin>
<groupId>org.Apache.Tomcat.maven</groupId>
<artifactId>Tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>${maven.Tomcat.port}</port>
</configuration>
</plugin>
Vous pouvez ajouter la configuration du port de manière permanente en y ajoutant le port d'attribut.
<build>
<plugins>
<plugin>
<groupId>org.Apache.Tomcat.maven</groupId>
<artifactId>Tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<port>9090</port>
</configuration>
</plugin>
</plugins>
</build>
Si vous utilisez le plugin maven Tomcat, vous pouvez spécifier un fichier context.xml en ajoutant un bloc de configuration de plugin au fichier pom.xml:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>Tomcat-maven-plugin</artifactId>
<version>1.0-beta-1</version>
<configuration>
<mode>both</mode>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
Le fichier context.xml par défaut utilisé est situé à src/main/webapp/META-INF/context.xml
.
Définissez différents ports ici.
Il existe un moyen simple et efficace de changer Tomcat (pas 8080) lors du démarrage avec Maven.
Editez simplement votre application.properties (si vous n’avez pas de fichier application.properties, créez un fichier application.properties dans le répertoire resources de votre projet maven) et définissez-le au-dessous de la ligne.
server.port = 8181 // Vous pouvez choisir votre numéro de port.
Je pense que le mieux et le plus simple est le suivant (si votre test est correctement lié à la phase d’intégration):
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>reserve-network-port</id>
<goals>
<goal>reserve-network-port</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<portNames>
<portName>maven.Tomcat.port</portName>
</portNames>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.Apache.Tomcat.maven</groupId>
<artifactId>Tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<server>Tomcat-development-server</server>
<port>9090</port>
</configuration>
</plugin>
Après avoir passé environ 3 heures à changer le port dans POM.xml, voici ma dernière solution.
<plugin>
<groupId>org.Apache.Tomcat.maven</groupId>
<artifactId>Tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<maven.Tomcat.port>8081</maven.Tomcat.port>
</configuration>
</plugin>
Utiliser seulement port
ne fonctionnait pas car ce n’était pas une propriété que vous pouvez définir dans <configuration>
Nous devons comprendre ce qui cause le problème. Dans mon cas, l'erreur était que le port 8080
est utilisé. J'ai changé le port dans server.xml
en 8081
mais maven ne le prend pas à partir de là. Nous devons le spécifier spécifiquement dans le champ configuration
. C'est ici que <maven.Tomcat.port>8081</maven.Tomcat.port>
intervient dans le sauvetage. Remarque: vous pouvez modifier le port 8081 en fonction de vos préférences.
Je sais que c'est une très vieille question qui n'a pas encore de réponse.
Et j'ai la même question lorsque je dois convertir un ancien projet utilisant Tomcat externe en Tomcat intégré et utilisant Tomcat7-maven-plugin.
Et ce dont j'ai besoin, c'est de créer un fichier jar exécutable . Mais la réponse existante ne peut pas fonctionner pour moi ......... quoi que je lance Java -jar project-name.jar
après mvn package
. il est toujours en cours d'exécution sur le port 8080
qui n'est pas ce que je voulais .... Ensuite, je recherche dans la doc Executable War
Java -jar my_project.jar -httpPort 9091
qui dans doc:
utilisation: Java -jar [chemin de votre jarre exec war] ...
-httpPort port http à utiliser
-httpsPort port https à utiliser ...
espérons que cela soit utile.