webentwicklung-frage-antwort-db.com.de

Alternativer Port für Tomcat (nicht 8080) beim Start mit Maven?

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 derselben Maschine laufen. 

71
sammyo

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 ist das, was Maven verwendet, um den Wert im Code abzurufen. Es kann aus einer Konfigurationsdatei oder von der Befehlszeile stammen.

Du könntest laufen

mvn -Dmaven.Tomcat.port=8181 Tomcat:run-war
102

Ich hatte ein ähnliches Problem, als ich mehrere kleine Servlets hatte, die gleichzeitig ihre Integrationstestphase durchführten, was zu einem Problem wurde, da diese für die Verwendung des gleichen Ports konfiguriert wurden. Dank des Ziels build-helper-maven-plugin: reserve-network-port ist es möglich, zufällige Portnummern zu erhalten, die verfügbar sind. Dann kann ich eine URL erstellen, die http: // localhost: [Anschluss]/[Servletname] } enthält. Dies ist Feed In der Java-Testklasse.

Zufälliger 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>

Die URL wird dem Java-Integrationstest zugeführt, der vom Failsafe-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");
}
27
redsolo

Mit der in 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>
26
Greg

Unten arbeitete für mich:

        <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 das 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>
4
jiahao

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 standardmäßige Datei context.xml befindet sich unter src/main/webapp/META-INF/context.xml

Stellen Sie dort verschiedene Ports ein.

2
Pascal Thivent

Es ist die beste und einfachste Möglichkeit, Tomcat (nicht 8080) zu ändern, wenn Sie mit Maven beginnen

Bearbeiten Sie einfach Ihre Datei "application.properties" (wenn Sie keine Datei "application.properties" haben, erstellen Sie eine Datei "application.properties" im Verzeichnis "resources" Ihres Maven-Projekts) und legen Sie sie in der Zeile darunter fest
server.port = 8181 // Sie können Ihre Portnummer auswählen.

1

Am besten und einfachsten finde ich Folgendes (wenn Ihr Test richtig 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>
1
MariuszS
<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
Pratik Gaurav

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 nur port funktionierte nicht, da dies keine Eigenschaft ist, die Sie in <configuration> festlegen können. Wir müssen verstehen, was das Problem verursacht. In meinem Fall war der Fehler, dass Port 8080 genommen wurde. Ich habe den Port in server.xml in 8081 geändert, aber Maven nimmt es nicht von dort. Wir müssen es im Feld configuration angeben. Hier kommt <maven.Tomcat.port>8081</maven.Tomcat.port> zur Rettung. Hinweis: Sie können den Port 8081 an einen anderen Ort anschließen.

0
chandresh

Ich weiß, es ist eine sehr alte Frage, die noch keine Antwort hat.

Und ich habe die ähnliche Frage, wenn ich ein altes Projekt, das Tomcat7 verwendet, in Tomcat verwandeln möchte, das Tomcat7-Maven-Plugin verwendet. 

Und was ich brauche, ist das Erstellen einer ausführbaren JAR-Datei. Die vorhandene Antwort kann jedoch nicht für mich funktionieren. Was auch immer ich Java -jar project-name.jar nach mvn package laufe. es läuft immer auf Port 8080, was ich nicht wollte ....__ Dann suche ich nach doc Executable War Was ich behoben habe, ist ein Parameter in Befehl hinzuzufügen 

Java -jar my_project.jar -httpPort 9091

welche in doc:

verwendung: Java -jar [Pfad zu Ihrem Exec-War-Jar] ...

-httpPort zu verwendender http-Port

-httpsPort zu verwendender https-Port ...

hoffe es nützlich.

0
Se ven