web-dev-qa-db-fra.com

Autre port pour Tomcat (pas 8080) lors du démarrage avec Maven?

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. 

71
sammyo

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
102
Vincent Demeester

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");
}
27
redsolo

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
Greg

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

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.

2
Pascal Thivent

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.

1

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>
1
MariuszS
<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
Pratik Gaurav

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.

0
chandresh

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.

0
Se ven