Есть ли простой способ указать альтернативный порт для Tomcat в pom или в командной строке. Я хотел бы иметь несколько проектов, работающих на одной машине.
Альтернативный порт для Tomcat (не 8080) при запуске с Maven?
Ответ 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>