enmascarar - Puerto alternativo para Tomcat(no 8080) cuando se inicia con Maven?
puerto alternativo al 8080 (11)
¿Existe alguna manera fácil de especificar un puerto alternativo para Tomcat en el pom o en la línea de comandos? Me gustaría tener varios proyectos ejecutándose en la misma máquina.
A continuación trabajé para mí:
<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>
Creo que lo mejor y más simple es esto (si su prueba está vinculada correctamente a la fase de integración):
<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>
Después de pasar aproximadamente 3 horas sobre cómo cambiar el puerto en POM.xml, esta es mi última solución.
<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>
El uso de solo port
no funcionaba, ya que no es una propiedad que pueda configurar en <configuration>
. Necesitamos entender qué está causando el problema. En mi caso, el error fue que se tomó el puerto 8080
. Cambié el puerto en server.xml
a 8081
pero maven no lo toma desde allí. Necesitamos decirlo específicamente en el campo de configuration
. Aquí es donde <maven.tomcat.port>8081</maven.tomcat.port>
rescue. Nota: Puede ajustar el puerto 8081 a otra cosa que le guste.
Existe una forma mejor y más fácil de cambiar Tomcat (no 8080) cuando se inicia con Maven
Simplemente edite su application.properties (si no tiene ningún archivo application.properties, luego cree un archivo application.properties en el directorio de recursos de su proyecto maven) y ajústelo debajo de la línea
server.port = 8181 // Puedes elegir tu número de puerto.
Puede agregar la configuración de puerto de forma permanente agregando el puerto de atributo a ella.
<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>
Sé que es una pregunta muy antigua que aún no tiene respuesta.
Y tengo la pregunta similar cuando necesito convertir un viejo proyecto que usa tomcat externo al tomcat incorporado use tomcat7-maven-plugin.
Y lo que necesito es construir un jar ejecutable. Pero la respuesta existente no puede funcionar para mí ... lo que sea que ejecute java -jar project-name.jar
después del mvn package
. siempre se está ejecutando en el puerto 8080
que no es lo que yo quería ... Luego busco en el documento Executable War y lo que arreglé es solo agregar un param al comando
java -jar my_project.jar -httpPort 9091
que en doc:
uso: java -jar [camino a su jarra de guerra ejecutiva] ...
-httpPort puerto http para usar
-httpsPort puerto https para usar ...
espero que sea útil.
Sé que este hilo es viejo pero ...
El enlace a la documentación, proporcionado por Greg es interesante:
port:
The port to run the Tomcat server on.
Type: int
Required: No
Expression: ${maven.tomcat.port}
Default: 8080
La expresión es lo que Maven usa para obtener el valor en su código. Puede provenir de un archivo de configuración o de la línea de comando.
Podrías correr
mvn -Dmaven.tomcat.port=8181 tomcat:run-war
Si está utilizando el complemento maven tomcat, puede especificar un contexto.xml agregando un bloque de configuración de complemento al 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>
El archivo context.xml predeterminado utilizado se encuentra en src/main/webapp/META-INF/context.xml
.
Establecer diferentes puertos allí.
Tuve un problema similar cuando tenía varios servlets pequeños que ejecutaban su fase de prueba de integración al mismo tiempo, lo que se convirtió en un problema ya que estaban configurados para usar el mismo puerto. Pero gracias al objetivo build-helper-maven-plugin:reserve-network-port , es posible obtener números de puerto aleatorios que estén disponibles. Luego puedo crear una URL que contenga http://localhost:[port]/[servletname] , que se introduce en la clase de prueba de Java.
Recuperando puerto aleatorio :
<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>
A partir tomcat con el puerto
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<configuration>
<port>${tomcat.http.port}</port>
<useTestClasspath>true</useTestClasspath>
</configuration>
....
</plugin>
Alimentando el URL a la prueba de integración de Java que se ejecuta con el complemento de failsafe
<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>
Código Java
public class DownloadAreaIT {
private static final String URL = System.getProperty("integration-test.url");
}
Usando la sintaxis dada en tomcat-maven-plugin , puede especificar directamente el puerto:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <configuration> <server>tomcat-development-server</server> <port>9966</port> </configuration> </plugin>
<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>