Maven - POM: Как сделать порт причала изменчивым, чтобы его можно было найти позже? - PullRequest
8 голосов
/ 26 июля 2010

Я работаю над набором интеграционных тестов, и у меня к вам вопрос.

Мой родительский pom определяет использование плагина Jetty с целью: run-war.Мне нужно сделать порт, который слушает пристань, изменяемым через командную строку.Этого можно достичь, передав, например, -Djetty.port = 8099.

В дочернем проекте мне нужно использовать этот номер порта для настройки конечной точки для некоторых тестов SOAP, которые мне нужно будет выполнить наслужба, размещенная на jetty.

Если я использую $ {jetty.port} в дочернем модуле pom в конфигурации конечной точки, это работает нормально, ЕСЛИ и только если Я явно передам -Djetty.port при вызове maven.

В моем дочернем pom:


<endpoint>http://127.0.0.1:${jetty.port}/{artifactId}<endpoint>

Мне нужно, чтобы jetty.port был заполнен 8080, что является значением по умолчанию для jetty, если -Djetty.port явно не передан, и все еще ловить любые другиезначения порта, если указан аргумент командной строки.

Ответы [ 2 ]

9 голосов
/ 26 июля 2010

Используйте раздел свойств и добавьте свойство jetty.port со значением по умолчанию:

<properties>
  <jetty.port>8080</jetty.port>
</properties>
8 голосов
/ 21 июля 2013

config Maven Jetty Plugin:

    <plugins>

        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1H.14.1</version>
            <configuration>
                <connectors>
                    <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                        <port>8085</port>
                        <maxIdleTime>60000</maxIdleTime>
                    </connector>
                </connectors>
             </configuration>
        </plugin>
    </plugins>

Если вы хотите использовать более новую версию Jetty Plugin, используйте следующую конфигурацию:С http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html:

Вместо этого вы можете сконфигурировать соединители в стандартном файле конфигурации jetty xml и указать его местоположение в параметре jettyXml.Обратите внимание, что , начиная с jetty-9.0, больше невозможно сконфигурировать коннектор https непосредственно в файле pom.xml: для этого нужно использовать файлы конфигурации jetty xml .Что-то вроде:

    <plugin>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>9.0.5.v20130815</version>
        <configuration>
            <jettyXml>src/main/resources/jetty.xml</jettyXml>
            <webApp>
                <contextPath>/yourCtxPath</contextPath>
            </webApp>
        </configuration>
    </plugin>

справится с задачей с содержимым файла jetty.xml:


<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<Configure id="Server" class="org.eclipse.jetty.server.Server">
  <Call id="httpsConnector" name="addConnector">
    <Arg>
      <New class="org.eclipse.jetty.server.ServerConnector">
        <Arg name="server"><Ref refid="Server" /></Arg>
          <Set name="host"><Property name="jetty.host" /></Set>
          <Set name="port"><Property name="jetty.port" default="8085" /></Set>
          <Set name="idleTimeout">30000</Set>
        </New>
    </Arg>
  </Call>

</Configure>

Смотрите журнал после 'mvn jetty:run ', в конце должно появиться что-то вроде:2013-09-05 09: 49: 05.047: ИНФОРМАЦИЯ: oejs.ServerConnector: main: запущен ServerConnector @ a6e9cb4 {HTTP / 1.1} {0.0.0.0:8085}

Для этой версии плагина вам понадобится maven 3 и java 7.

...