2009-03-14 11 views
68

Esiste un modo semplice per specificare una porta alternativa per Tomcat nel pom o nella riga di comando. Mi piacerebbe avere diversi progetti in esecuzione sulla stessa macchina.Porta alternativa per Tomcat (non 8080) quando si avvia con Maven?

+3

mvn -Dmaven.tomcat .port = <1024-49151> tomcat : run Esempio mvn -Dmaven.tomcat7.port = 8585 tomcat7: eseguire OR nella pom.xml ... Rafiq

risposta

2

Se si utilizza il plugin Tomcat Maven, è possibile specify a context.xml con l'aggiunta di un blocco di configurazione plugin per il pom.xml: file di context.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> 

Il valore di default utilizzata si trova a src/main/webapp/META-INF/context.xml.

Impostare diverse porte lì.

23

Utilizzando la sintassi indicata sulla tomcat-maven-plugin, è possibile specificare direttamente la porta:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>tomcat-maven-plugin</artifactId>    
    <configuration>   
    <server>tomcat-development-server</server> 
    <port>9966</port> 
    </configuration> 
</plugin> 
+0

può questo essere specificato all'interno del settings.xml? Questa configurazione potrebbe rompere gli altri utilizzandola se il loro tomcat girasse su una porta diversa. – Drew

+0

Nuova documentazione qui: https://tomcat.apache.org/maven-plugin-trunk/run-mojo-features.html – dhh

+0

Questo non funziona per me – Snickers3192

96

So che questo thread è vecchio, ma ...

Il link alla documentazione, fornita da Greg è interessante:

port: 
The port to run the Tomcat server on. 
    Type: int 
    Required: No 
    Expression: ${maven.tomcat.port} 
    Default: 8080 

L'espressione è ciò che maven usa per ottenere il valore nel suo codice. Potrebbe provenire da un file di configurazione o dalla riga di comando.

È possibile eseguire

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

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

+1

dove dovremmo eseguire questo? – bks4line

+0

Ciao @ bks4line puoi dare il comando sopra in seleziona il tuo progetto e vai a Esegui come opzione Esegui AS -> Esegui configurazione -> Obiettivi –

25

ho avuto un problema simile quando ho avuto diversi piccoli servlet che corrono la loro fase di integrazione-test, allo stesso tempo, che è diventato un problema di quelli sono stati configurati per utilizzare la stessa porta . Ma grazie all'obiettivo build-helper-maven-plugin:reserve-network-port, è possibile ottenere numeri di porta casuali disponibili. Quindi posso creare un URL contenente http://localhost:[port]/[servletname], che è feed into la classe di test Java.

Recupero porta casuale: Tomcat

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

Partendo dal porto

<plugin> 
<groupId>org.apache.tomcat.maven</groupId> 
<artifactId>tomcat6-maven-plugin</artifactId> 
<configuration> 
    <port>${tomcat.http.port}</port> 
    <useTestClasspath>true</useTestClasspath> 
</configuration> 
.... 
</plugin> 

Nutrire l'URL del test di integrazione di Java che viene eseguito dal failsafe plug-in

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

codice Java

public class DownloadAreaIT { 
    private static final String URL = System.getProperty("integration-test.url"); 
} 
1

Penso migliore e più semplice è questo (se il test siano correttamente si legano alla fase di integrazione):

<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

È Coud aggiungere la configurazione della porta in modo permanente aggiungendo la porta dell'attributo ad esso.

<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

questo non funziona – iMysak

+0

Bene, funziona per me. Quale versione di Tomcat stai usando? – jiahao

+0

tomcat 7, stesso tomcat7-maven-plugin – iMysak

9

seguito ha lavorato per me:

 <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

Come è diverso dalle risposte esistenti? – Leigh

+0

$ {maven.tomcat.port} -> dove devo inserire il valore di maven.tomcat.port? – divine

1

C'è modo migliore e più facile da cambiare Tomcat (non 8080) quando si inizia con Maven

Basta Modificare le application.properties (se si dispone di nessun file application.properties, quindi creare un file application.properties nella directory delle risorse del progetto maven) e impostare sotto la riga
server.port = 8181 // È possibile c Hoose il tuo numero di porta.

0

Dopo aver trascorso circa 3 ore su come modificare la porta in POM.xml, ecco la mia ultima soluzione.

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

Utilizzando solo port non funzionava dal momento che non è una proprietà che è possibile impostare in <configuration>. Dobbiamo capire che cosa sta causando il problema. Nel mio caso, l'errore era che veniva presa la porta 8080. Ho cambiato la porta in server.xml in 8081 ma Maven non la prende da lì. Dobbiamo specificarlo nel campo configuration. Qui è dove <maven.tomcat.port>8081</maven.tomcat.port> arriva in soccorso. Nota: puoi spostare la porta 8081 su qualcos'altro che ti piace.

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> 
Problemi correlati