Альтернативный порт для Tomcat (не 8080) при запуске с Maven? - PullRequest
72 голосов
/ 14 марта 2009

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

Ответы [ 11 ]

103 голосов
/ 01 июля 2011

Я знаю, что эта тема старая, но ...

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

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
28 голосов
/ 26 сентября 2012

У меня была похожая проблема, когда у меня было несколько небольших сервлетов, которые одновременно выполняли фазу тестирования интеграции, что стало проблемой, поскольку они были настроены на использование одного и того же порта. Но благодаря цели build-helper-maven-plugin: Reserve-network-port можно получить произвольные номера портов, которые доступны. Затем я могу создать URL-адрес, содержащий http://localhost:[port]/[servletname],, то есть канал в тестовый класс 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");
}
26 голосов
/ 09 апреля 2010

Используя синтаксис, указанный в 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>
9 голосов
/ 02 декабря 2015

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

        <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>
4 голосов
/ 06 августа 2013

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

<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>
2 голосов
/ 02 ноября 2016

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

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

2 голосов
/ 15 марта 2009

Если вы используете плагин 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.

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

1 голос
/ 05 августа 2017
<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 голос
/ 23 июня 2013

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

<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>
0 голосов
/ 05 мая 2018

Я знаю, что это очень старый вопрос, на который пока нет ответа.

И у меня есть похожий вопрос, когда мне нужно преобразовать старый проект, который использует внешний tomcat, во встроенный tomcat, используя tomcat7-maven-plugin.

А мне нужно собрать исполняемый файл jar. Но существующий ответ не может работать для меня ... все, что я запускаю java -jar project-name.jar после mvn package. он всегда работает на порту 8080, чего я не хотел ... Затем я ищу документ Исполняемая война и то, что я исправил, это просто добавить параметр в команду

java -jar my_project.jar -httpPort 9091

который в документе:

использование: java -jar [путь к вашему exec war jar] ...

-httpPort http порт для использования

-httpsPort https порт для использования ...

надеюсь, что это полезно.

...