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


77

Чи є простий спосіб вказати альтернативний порт для Tomcat в пам’яті або в командному рядку. Я хотів би мати кілька проектів, що працюють на одній машині.


4
mvn -Dmaven.tomcat <версія> .port = <1024–49151> tomcat <version>: запустити Приклад mvn -Dmaven.tomcat7.port = 8585 tomcat7: запустити АБО в POM.XML <плагін> ... <конфігурація> < порт> 8585 </port> </configuration> </plugin>
Рафік

Відповіді:


109

Я знаю, що ця тема стара, але ...

Цікавим є посилання на документацію, надану Грегом:

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

8
Абсолютно! mvn -Dmaven.tomcat.port=8181 tomcat:run
lrkwz

1
куди нам це запустити?
bks4line

Привіт @ bks4line, ти можеш дати вищезазначену команду у виборі свого проекту та перейти до опції "Запустити як" Запустити як -> Запустити конфігурацію -> Цілі
Шрінівас Гаділлі

32

Використовуючи синтаксис, вказаний у плагіні tomcat-maven , ви можете безпосередньо вказати порт:

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

Чи можна це вказати в settings.xml? Ця конфігурація порушила б використання інших, якщо їхня кошка працювала на іншому порту.
Дрю

Нова документація тут: tomcat.apache.org/maven-plugin-trunk/run-mojo-features.html
dhh,

28

У мене була подібна проблема, коли у мене було кілька невеликих сервлетів, які одночасно запускали фазу тестування інтеграції, що стало проблемою, оскільки ті були налаштовані на використання того самого порту. Але завдяки цілі 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");
}

9

Нижче працювали для мене:

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

Чим це відрізняється від існуючих відповідей?
Лі

$ {maven.tomcat.port} -> де слід розмістити значення maven.tomcat.port?
божественний

4

Ви можете назавжди додати конфігурацію порту, додавши до неї порт атрибута.

<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 7, той же tomcat7-maven-plugin
iMysak

3
Запустити як tomcat7: запустити замість tomcat: run

4

Найкращий і простий спосіб змінити Tomcat (а не 8080), починаючи з Maven

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


2

Якщо ви використовуєте плагін 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

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

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

0

Провівши близько 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 на щось інше, що вам подобається.


0

Я знаю, це дуже давнє запитання, на яке ще немає відповіді.

І я маю подібне запитання, коли мені потрібно перетворити старий проект, який використовує зовнішній 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/… )
Саша Бонд,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.