2009-03-14 6 views

Répondre

2

Si vous utilisez le plugin tomcat maven, vous pouvez specify a context.xml en ajoutant un bloc de configuration du plugin pour le 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.

23

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

ceci peut être spécifié dans le settings.xml? Cette configuration casserait les autres en l'utilisant si leur Tomcat fonctionnait sur un port différent. – Drew

+0

Nouvelle documentation ici: https://tomcat.apache.org/maven-plugin-trunk/run-mojo-features.html – dhh

+0

Cela ne fonctionne pas pour moi – Snickers3192

96

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 utiliser pour obtenir la valeur dans son code. Cela peut provenir d'un fichier de configuration ou de la ligne de commande.

Vous pouvez exécuter

mvn -Dmaven.tomcat.port=8181 tomcat:run-war 
+7

Absolument! 'mvn -Dmaven.tomcat.port = 8181 tomcat: run' – lrkwz

+1

où devrions-nous exécuter ceci? – bks4line

+0

Salut @ bks4line vous pouvez donner la commande ci-dessus dans sélectionnez votre projet et allez à l'option Exécuter comme Exécuter AS -> Exécuter Configuration -> Buts –

25

j'ai eu un problème similaire quand j'ai eu plusieurs petites servlets qui exécutent leur phase d'intégration test en même temps, ce qui est devenu un problème que ceux ont été 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. Ensuite, je peux créer une URL contenant http://localhost:[port]/[servletname], qui est feed into la classe de test Java.

Récupération 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> 

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

Nourrir l'URL du test d'intégration Java qui est géré par la sécurité intégrée plugin

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

Je pense que le meilleur et le plus simple est ce (si votre test sont lier correctement à 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> 
4

Vous Coud ajouter la configuration du port de manière permanente en 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> 
+1

cela ne fonctionne pas – iMysak

+0

Eh bien, cela fonctionne pour moi. Quelle version de Tomcat utilisez-vous? – jiahao

+0

tomcat 7, même tomcat7-maven-plugin – iMysak

9

ci-dessous a fonctionné 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> 
+0

En quoi cela est-il différent des réponses existantes? – Leigh

+0

$ {maven.tomcat.port} -> Où dois-je placer la valeur de maven.tomcat.port? – divine

1

Il est le meilleur et facile de changer Tomcat (pas 8080) lors du démarrage avec Maven

Juste Modifier vos application.properties (si vous avez pas de fichier application.properties, puis créez un fichier application.properties dans le répertoire des ressources de votre projet maven) et réglez au-dessous de la ligne
server.port = 8181 // Vous pouvez c hélez votre numéro de port.

0

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 simplement 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 en server.xml en 8081 mais maven ne le prend pas à partir de là. Nous devons le dire spécifiquement dans le champ configuration. C'est où <maven.tomcat.port>8081</maven.tomcat.port> vient en secours. Note: Vous pouvez chnage le port 8081 à quelque chose que vous aimez.

0
<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> 
Questions connexes