Gibt es eine einfache Möglichkeit, einen alternativen Port für Tomcat im POM oder in der Befehlszeile anzugeben? Ich möchte, dass mehrere Projekte auf demselben Computer ausgeführt werden.
Gibt es eine einfache Möglichkeit, einen alternativen Port für Tomcat im POM oder in der Befehlszeile anzugeben? Ich möchte, dass mehrere Projekte auf demselben Computer ausgeführt werden.
Antworten:
Ich weiß, dass dieser Thread alt ist, aber ...
Der Link zur Dokumentation von Greg ist interessant:
port:
The port to run the Tomcat server on.
Type: int
Required: No
Expression: ${maven.tomcat.port}
Default: 8080
Der Ausdruck wird von Maven verwendet, um den Wert in seinem Code abzurufen. Es kann aus einer Konfigurationsdatei oder über die Befehlszeile stammen.
Du könntest rennen
mvn -Dmaven.tomcat.port=8181 tomcat:run-war
mvn -Dmaven.tomcat.port=8181 tomcat:run
Mit der im Tomcat-Maven-Plugin angegebenen Syntax können Sie den Port direkt angeben:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<server>tomcat-development-server</server>
<port>9966</port>
</configuration>
</plugin>
Ich hatte ein ähnliches Problem, als ich mehrere kleine Servlets hatte, die gleichzeitig ihre Integrationstestphase ausführten, was zu einem Problem wurde, da diese für die Verwendung desselben Ports konfiguriert waren. Dank des Build-Helper-Maven-Plugins: Reserve-Network-Port- Ziel ist es jedoch möglich, zufällige Portnummern zu erhalten, die verfügbar sind. Dann kann ich eine URL erstellen, die http: // localhost: [port] / [Servletname] enthält und in die Java- Testklasse eingespeist wird .
Zufälligen Port abrufen :
<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>
Tomcat mit dem Port starten
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<configuration>
<port>${tomcat.http.port}</port>
<useTestClasspath>true</useTestClasspath>
</configuration>
....
</plugin>
Eingabe der URL in den Java-Integrationstest, der vom ausfallsicheren Plugin ausgeführt wird
<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>
Java-Code
public class DownloadAreaIT {
private static final String URL = System.getProperty("integration-test.url");
}
Unten hat bei mir funktioniert:
<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>
Sie können die Portkonfiguration dauerhaft hinzufügen, indem Sie den Attributport hinzufügen.
<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>
Es gibt die beste und einfachste Möglichkeit, Tomcat (nicht 8080) zu ändern, wenn Sie mit Maven beginnen
Bearbeiten Sie einfach Ihre application.properties-Datei (wenn Sie keine application.properties-Datei haben, erstellen Sie eine application.properties-Datei im Ressourcenverzeichnis Ihres Maven-Projekts) und legen Sie die folgende Zeile fest:
server.port = 8181 // Sie können Ihre Portnummer auswählen.
Wenn Sie das Maven Tomcat-Plugin verwenden, können Sie eine context.xml angeben, indem Sie der pom.xml einen Plugin-Konfigurationsblock hinzufügen:
<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>
Die verwendete Standarddatei context.xml befindet sich unter src/main/webapp/META-INF/context.xml
.
Stellen Sie dort verschiedene Ports ein.
Ich denke, das Beste und Einfachste ist Folgendes (wenn Ihr Test ordnungsgemäß an die Integrationsphase gebunden ist):
<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>
<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>
Nachdem ich ungefähr 3 Stunden damit verbracht habe, den Port in POM.xml zu ändern, ist hier meine neueste Lösung.
<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>
Die Verwendung von just hat port
nicht funktioniert, da dies keine Eigenschaft ist, die Sie festlegen können <configuration>
. Wir müssen verstehen, was das Problem verursacht. In meinem Fall war der Fehler, dass der Port belegt 8080
ist. Ich habe den Port in geändert server.xml
, 8081
aber Maven nimmt ihn nicht von dort. Wir müssen es speziell im configuration
Feld erzählen . Hier <maven.tomcat.port>8081</maven.tomcat.port>
kommt die Rettung. Hinweis: Sie können den Port 8081 auf etwas anderes umstellen, das Ihnen gefällt.
Ich weiß, dass es eine sehr alte Frage ist, die noch keine Antwort hat.
Und ich habe die ähnliche Frage, wenn ich ein altes Projekt konvertieren muss, das einen äußeren Kater in einen eingebetteten Kater verwendet. Verwenden Sie das Tomcat7-Maven-Plugin.
Und was ich brauche, ist ein ausführbares Glas zu erstellen. Aber bestehende Antwort kann nicht Arbeit für mich ... was auch immer ich laufe java -jar project-name.jar
nach mvn package
. Es läuft immer auf dem Port, 8080
den ich nicht wollte ... Dann suche ich im Dokument Executable War
und was ich behoben habe, ist einfach einen Parameter im Befehl hinzuzufügen
java -jar my_project.jar -httpPort 9091
welche in doc:
Verwendung: java -jar [Pfad zu Ihrem Exec War Jar] ...
-httpPort http Port zu verwenden
-httpsPort https Port zu verwenden ...
hoffe es ist nützlich.
java -Dserver.port=8888 -jar target/demo-0.0.1-SNAPSHOT.war
oder java -Dserver.port=8888 -jar target/demo-0.0.1-SNAPSHOT.jar
wenn Spring Boot verwendet wird ( docs.spring.io/spring-boot/docs/current/reference/htmlsingle/… )