2010-07-26 11 views
8

Pracuję nad pakietem testów integracji i mam dla ciebie pytanie.Maven - POM: Jak zmienić port pomostu, aby można go było odzyskać później?

My parent pom definiuje użycie wtyczki "molo" z celem: run-war. Muszę uczynić port, którego przystań słucha na zmianę za pomocą wiersza poleceń. Można to osiągnąć, przekazując np. -Djetty.port = 8099.

W projekcie potomnym muszę użyć tego numeru portu, aby skonfigurować punkt końcowy dla niektórych testów SOAP, które będę musiał uruchomić w usłudze hostowanej przez pomost.

Jeśli użyję $ {jetty.port} w mojej pom dziecko w konfiguracji punktu końcowego działa dobrze IF i tylko JEŚLI jawnie przekazać -Djetty.port podczas wywoływania maven.

W moim dzieckiem pom:


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

muszę jetty.port być wypełnione z 8080, który jest co pomost domyślnie jeśli -Djetty.port wyraźnie nie minął, a jeszcze złapać jakieś inne wartości portów jeśli podano argument wiersza poleceń.

Odpowiedz

9

Użyj sekcji Właściwości, a dodać obiekt jetty.port o wartości domyślnej:

<properties> 
    <jetty.port>8080</jetty.port> 
</properties> 
+0

Dziękuję. To nie było zbyt trudne :-) Przyjmuję ten post jako odpowiedź, gdy tylko skończy się czas. – John

+2

To nie działa. – Bobo

+1

Tak - to też nie działa dla mnie. Mogę zrobić -Djetty.port = 8080 z linii poleceń, ale umieszczenie w pom nie działa. – hba

7

config Maven pomost wtyczki:

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

Jeśli chcesz użyć nowszej wersji molo wtyczki, użyj następującej konfiguracji:

Od http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html:

Zamiast tego można skonfigurować złącza w standardowym pliku konfiguracyjnym jetty xml i umieścić jego lokalizację w parametrze jettyXml. Zauważ, że od jetty-9.0 nie jest już możliwe konfigurowanie łącznika https bezpośrednio w pom.xml: musisz użyć plików konfiguracyjnych jetty xml, aby to zrobić.
Coś jak:

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

by rade, o zawartości pliku 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> 

Zobacz dziennik po „mvn jetty: run "na końcu powinno być coś takiego:
2013-09 -05 09: 49: 05,047: INFO: oejs.ServerConnector: main: Rozpoczął [email protected]{HTTP/1.1}{0.0.0.0: }

Trzeba będzie użyć Maven 3 i Java 7 dla ta wersja wtyczki.

Powiązane problemy