Alternativer Port für Tomcat (nicht 8080) beim Starten mit Maven?
77
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.
Kann dies in der settings.xml angegeben werden? Diese Konfiguration würde andere Benutzer davon abhalten, wenn ihr Tomcat auf einem anderen Port ausgeführt würde.
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 .
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.
Die Verwendung von just hat portnicht 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 8080ist. Ich habe den Port in geändert server.xml, 8081aber Maven nimmt ihn nicht von dort. Wir müssen es speziell im configurationFeld 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.jarnach mvn package. Es läuft immer auf dem Port, 8080den 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] ...
Antworten:
Ich weiß, dass dieser Thread alt ist, aber ...
Der Link zur Dokumentation von Greg ist interessant:
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
quelle
mvn -Dmaven.tomcat.port=8181 tomcat:run
Mit der im Tomcat-Maven-Plugin angegebenen Syntax können Sie den Port direkt angeben:
quelle
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
quelle
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>
quelle
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>
quelle
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.
quelle
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.
quelle
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>
quelle
<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>
quelle
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 belegt8080
ist. Ich habe den Port in geändertserver.xml
,8081
aber Maven nimmt ihn nicht von dort. Wir müssen es speziell imconfiguration
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.quelle
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
nachmvn 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ügenwelche in doc:
hoffe es ist nützlich.
quelle
java -Dserver.port=8888 -jar target/demo-0.0.1-SNAPSHOT.war
oderjava -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/… )