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?
risposta
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ì.
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>
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
Nuova documentazione qui: https://tomcat.apache.org/maven-plugin-trunk/run-mojo-features.html – dhh
Questo non funziona per me – Snickers3192
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
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");
}
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>
È 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>
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>
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.
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.
<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. Jenkins non si avvia: Impossibile ascoltare sulla porta 8080
- 2. Tomcat non si avvia
- 3. Tomcat si avvia senza errori ma non si ascolta su 8080
- 4. tomcat in esecuzione, ma la porta 8080 non risponde
- 5. Errore server Tomcat - Porta 8080 già in uso
- 6. Errore di installazione di Tomcat quando si cambia la porta
- 7. mvn tomcat: run non avvia Tomcat
- 8. Tomcat funziona, ma non può raggiungere http: // localhost: 8080/
- 9. Perché Tomcat non si collegherà alla porta di arresto (8005)?
- 10. Android Maven non si avvia emulatore
- 11. Posso eseguire Tomcat in modo sicuro sulla porta 443 e non correttamente su 8080
- 12. tomcat7-maven-plugin: eseguire più webapps ma porta 8080 già in uso
- 13. EC2: come aggiungere la porta 8080 nel gruppo di sicurezza?
- 14. Tomcat Webapp sulla porta 80
- 15. Maven Tomcat embedded
- 16. Apache 2 + Tomcat 6 + Mod_jk: come posso chiudere la porta 8080?
- 17. Tomcat avvio, 8080 indirizzo già in uso
- 18. Porta in uso quando si avvia l'app Node.js con Heroku Foreman
- 19. come configurare la dimensione dell'heap quando si avvia un'applicazione di avvio a molla con tomcat incorporato?
- 20. "HTTP Status 404 - /" (localhost: 8080) quando si tenta di installare apache tomcat in Eclipse
- 21. Packager non si avvia
- 22. System.Threading.Timer non si avvia?
- 23. Come cambiare porta di tomcat dal plugin tomcat di eclipse
- 24. RabbitMQ non si avvia
- 25. IntelliJ non si ferma tomcat/tcServer
- 26. MongoDB non si avvia
- 27. WinGHCi non si avvia
- 28. SonarQube non si avvia
- 29. L'emulatore Android non si avvia
- 30. Porta 8080 richiesta da VMware vFabric tc Server Developer
mvn -Dmaven.tomcat .port = <1024-49151> tomcat : run Esempio mvn -Dmaven.tomcat7.port = 8585 tomcat7: eseguire OR nella pom.xml ... configuration> –
Rafiq