Чи є простий спосіб вказати альтернативний порт для Tomcat в пам’яті або в командному рядку. Я хотів би мати кілька проектів, що працюють на одній машині.
Чи є простий спосіб вказати альтернативний порт для Tomcat в пам’яті або в командному рядку. Я хотів би мати кілька проектів, що працюють на одній машині.
Відповіді:
Я знаю, що ця тема стара, але ...
Цікавим є посилання на документацію, надану Грегом:
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
mvn -Dmaven.tomcat.port=8181 tomcat:run
Використовуючи синтаксис, вказаний у плагіні tomcat-maven , ви можете безпосередньо вказати порт:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<server>tomcat-development-server</server>
<port>9966</port>
</configuration>
</plugin>
У мене була подібна проблема, коли у мене було кілька невеликих сервлетів, які одночасно запускали фазу тестування інтеграції, що стало проблемою, оскільки ті були налаштовані на використання того самого порту. Але завдяки цілі build-helper-maven-plugin: reserve-network-port можна отримати випадкові номери портів, які доступні. Тоді я можу створити URL-адресу, що містить http: // localhost: [порт] / [ім'я сервлета] , яка подається до тестового класу 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");
}
Нижче працювали для мене:
<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>
Ви можете назавжди додати конфігурацію порту, додавши до неї порт атрибута.
<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>
Найкращий і простий спосіб змінити Tomcat (а не 8080), починаючи з Maven
Просто відредагуйте файл application.properties (якщо у вас немає файлу application.properties, то створіть файл application.properties у каталозі ресурсів вашого проекту maven) і встановіть нижче рядок
server.port = 8181 // Ви можете вибрати номер порту.
Якщо ви використовуєте плагін 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
.
Встановіть там різні порти.
Я думаю, що найкращим і найпростішим є це (якщо ваш тест правильно прив’язаний до фази інтеграції):
<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>
<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>
Провівши близько 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 на щось інше, що вам подобається.
Я знаю, це дуже давнє запитання, на яке ще немає відповіді.
І я маю подібне запитання, коли мені потрібно перетворити старий проект, який використовує зовнішній tomcat, на вбудований tomcat, використовуючи tomcat7-maven-plugin.
І мені потрібно створити виконувану банку. Але існуючий відповідь не може працювати для мене ... все , що я біжу java -jar project-name.jar
після mvn package
. він завжди працює на порту, 8080
якого я не хотів ... Потім я шукаю документ Executable War,
і те, що я виправив, просто додає параметр у команді
java -jar my_project.jar -httpPort 9091
який у документі:
використання: java -jar [шлях до вашої бойової банки exec] ...
-httpPort http-порт для використання
-httpsPort https порт для використання ...
сподіваюся, це корисно.
java -Dserver.port=8888 -jar target/demo-0.0.1-SNAPSHOT.war
або java -Dserver.port=8888 -jar target/demo-0.0.1-SNAPSHOT.jar
якщо використовується весняне завантаження ( docs.spring.io/spring-boot/docs/current/reference/htmlsingle/… )