2009-03-14 2 views
68

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

+3

MVN -Dmaven.tomcat .port = <1024-49151> кот: запустить Пример MVN -Dmaven.tomcat7.port = 8585 tomcat7: запустить или в pom.xml ... <конфигурация> Rafiq

ответ

2

Если вы используете Maven TOMCAT плагин, вы можете specify a context.xml путем добавления блока конфигурации плагина к pom.xml: файл context.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> 

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

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

23

Используя синтаксис, приведенный на 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> 
+0

Может ли это быть указано в settings.xml? Эта конфигурация сломала бы других, используя ее, если бы их кошка работала на другом порту. – Drew

+0

Новая документация здесь: https://tomcat.apache.org/maven-plugin-trunk/run-mojo-features.html – dhh

+0

Это не сработает для меня – Snickers3192

96

Я знаю, эта нить старый, но ...

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

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

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

+1

где мы должны запускать это? – bks4line

+0

Привет @ bks4line, вы можете дать приведенную выше команду в , выберите свой проект и перейдите к опции «Запуск как» Запуск AS -> Конфигурация запуска -> Голы –

25

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

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

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

это не работает – iMysak

+0

Ну, это работает для меня. Какую версию Tomcat вы используете? – jiahao

+0

tomcat 7, тот же tomcat7-maven-plugin – iMysak

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

Как это отличается от существующих ответов? – Leigh

+0

$ {maven.tomcat.port} -> где я должен разместить значение maven.tomcat.port? – divine

1

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

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

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
<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> 
Смежные вопросы