Подтвердить что ты не робот

Альтернативный порт для Tomcat (не 8080) при запуске с Maven?

Есть ли простой способ указать альтернативный порт для Tomcat в pom или в командной строке. Я хотел бы иметь несколько проектов, работающих на одной машине.

4b9b3361

Ответ 1

Я знаю, что эта ветка устарела, но...

Интересна ссылка на документацию, предоставленную Грегом:

port:
The port to run the Tomcat server on.
    Type: int
    Required: No
    Expression: ${maven.tomcat.port}
    Default: 8080

Выражение - это то, что maven использует, чтобы получить значение в своем коде. Это может происходить из файла конфигурации или из командной строки.

Вы можете запустить

mvn -Dmaven.tomcat.port=8181 tomcat:run-war

Ответ 2

У меня была аналогичная проблема, когда у меня было несколько небольших сервлетов, которые одновременно запускали свою фазу интеграции, что стало проблемой, поскольку они были настроены на использование одного и того же порта. Но благодаря build-helper-maven-plugin: reserve-network-port, можно получить произвольные номера портов, которые доступны. Затем я могу создать URL-адрес, содержащий http://localhost:[port]/[servletname], который feed в тестовый класс Java.

Получение случайного порта:

<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 с портом

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<configuration>
    <port>${tomcat.http.port}</port>
    <useTestClasspath>true</useTestClasspath>
</configuration>
....
</plugin>

Подача URL-адреса в тест интеграции Java, который запускается отказоустойчивым плагином

<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-код

public class DownloadAreaIT {
    private static final String URL = System.getProperty("integration-test.url");
}

Ответ 3

Используя синтаксис, указанный в tomcat-maven-plugin, вы можете напрямую указать порт:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>tomcat-maven-plugin</artifactId>            
  <configuration>          
    <server>tomcat-development-server</server>
    <port>9966</port>
  </configuration>
</plugin>

Ответ 4

Ниже работал у меня:

        <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>

Ответ 5

Вы можете добавить конфигурацию порта навсегда, добавив к нему порт атрибута.

<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>

Ответ 6

Если вы используете плагин maven tomcat, вы можете указать context.xml, добавив блок конфигурации плагина в 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>

Используемый по умолчанию файл context.xml находится в src/main/webapp/META-INF/context.xml.

Установите там разные порты.

Ответ 7

Я думаю, что лучший и самый простой - это (если ваш тест правильно привязан к фазе интеграции):

<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>

Ответ 8

Существует лучший и простой способ изменить Tomcat (не 8080) при запуске с Maven

Просто отредактируйте приложение application.properties(если у вас нет файла application.properties, затем создайте файл application.properties в каталоге ресурсов вашего проекта maven) и установите его ниже строки
server.port = 8181//Вы можете выбрать номер своего порта.

Ответ 9

Потратив около 3 часов на то, как изменить порт в POM.xml, вот мое последнее решение.

<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>

Использование только port не работало, поскольку это не свойство, которое вы можете установить в <configuration>. Нам нужно понять, что вызывает проблему. В моем случае ошибка заключалась в том, что принимается порт 8080. Я изменил порт в server.xml на 8081, но maven не взял его оттуда. Нам нужно указать это в поле configuration. Здесь <maven.tomcat.port>8081</maven.tomcat.port> приходит на помощь. Примечание. Вы можете переместить порт 8081 на что-то еще, что вам нравится.

Ответ 10

<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>