Port alternatif pour Tomcat (pas 8080) en commençant par Maven?

est-il un moyen facile de spécifier un port alternatif pour Tomcat dans la pom ou sur la ligne de commande. J'aimerais avoir plusieurs projets sur la même machine.

71
demandé sur Rich Seller 2009-03-14 23:22:17

11 réponses

je sais que ce fil est vieux mais ...

le lien vers la documentation, fourni 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. Elle pourrait provenir d'un fichier de configuration, ou en ligne de commande.

Vous pourriez exécuter

mvn -Dmaven.tomcat.port=8181 tomcat:run-war
100
répondu Vincent Demeester 2011-11-30 09:01:29

j'ai eu un problème similaire lorsque j'ai eu plusieurs petites servlets qui exécutaient leur phase de test d'intégration en même temps, ce qui est devenu un problème car ceux-ci étaient configurés pour utiliser le même port. Mais grâce à l'objectif build-helper-maven-plugin:reserve-network-port , il est possible d'obtenir des numéros de port aléatoires qui sont disponibles. Alors je peux créer une URL contenant http://localhost: [port]/[servletname] , qui est alimenter la Java de la classe de test.

récupération de 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>

commençant par 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>

alimenter L'URL du test D'intégration Java qui est exécuté par le plugin 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");
}
26
répondu redsolo 2014-03-25 20:23:55

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>
26
répondu Greg 2017-10-20 12:39:28

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>
9
répondu Sai Viswanath VKS Palaparthi 2015-12-02 17:23:40

vous pouvez ajouter la configuration du port de façon permanente en y ajoutant l'attribut port.

<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>
4
répondu jiahao 2013-08-06 15:43:50

si vous utilisez le plugin maven tomcat, vous pouvez spécifier un contexte.xml en ajoutant un bloc de configuration de plugin au 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 contexte par défaut.le fichier xml utilisé est situé à src/main/webapp/META-INF/context.xml .

définit différents ports.

2
répondu Pascal Thivent 2009-03-15 11:09:58

je pense que le meilleur et le plus simple est celui-ci (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>
1
répondu MariuszS 2013-06-22 21:33:19

il est le meilleur et le moyen facile de changer Tomcat (pas 8080) en commençant par Maven

modifiez simplement votre application.propriétés (si vous n'avez pas d'application.propriétés fichier, puis créer une application.propriétés fichier dans le répertoire des ressources de votre projet maven) fichier et défini au-dessous de la ligne

serveur.port=8181 //Vous pouvez choisir votre numéro de port.

1
répondu Abdullah Al Hafiz 2016-11-02 10:15:01
<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>
1
répondu Pratik Gaurav 2017-08-05 04:19:03

après avoir passé environ 3 heures sur la façon de 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>

en utilisant juste port ne fonctionnait pas car ce n'est 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 pris. J'ai changé le port dans server.xml en 8081 mais maven ne prend pas à partir de là. Nous devons le dire spécifiquement dans configuration sur le terrain. C'est là que <maven.tomcat.port>8081</maven.tomcat.port> vient en secours. Note: vous pouvez changer le port 8081 en quelque chose que vous aimez.

0
répondu chandresh 2017-06-30 11:54:46

je sais que c'est une question très ancienne qui n'a pas encore de réponse.

et j'ai la même question quand j'ai besoin de convertir un vieux projet qui utilise Tomcat externe à tomcat intégré utiliser tomcat7-maven-plugin.

et ce dont j'ai besoin c'est de construire un pot exécutable. Mais la réponse ne peut pas fonctionner pour moi... quoi que je fasse java -jar project-name.jar après mvn package . il tourne toujours sur le port 8080 ce qui n'est pas ce que je voulais... Puis je cherche le doc Exécutable Guerre et ce que j'ai corrigé c'est juste ajouter un param en commande

java -jar my_project.jar -httpPort 9091

qui dans doc:

usage: java-jar [chemin d'accès à votre exec guerre pot] ...

- port http httpPort à utiliser

- port httpsPort port à utiliser ...

j'espère que c'est utile.

0
répondu Se ven 2018-05-05 03:23:15