2010-07-26 6 views
8

Ich arbeite an einem Integrationstestsuite und ich habe eine Frage für Sie.Maven - POM: Wie kann der Jetty-Port geändert werden, so dass er später abgerufen werden kann?

Meine Eltern pom definiert die Verwendung der Anlegesteg-Plugin, mit dem Ziel: run-Krieg. Ich muss den Port, den der Anlegesteg annimmt, über die Befehlszeile änderbar machen. Dies kann erreicht werden, indem beispielsweise -Djetty.port = 8099 übergeben wird.

Im Kind-Projekt, ich brauche diese Port-Nummer verwenden, um den Endpunkt für einige SOAP-Tests zu konfigurieren, dass ich auf den Dienst von Anlegestelle gehostet laufen brauchen.

Wenn ich $ {jetty.port} in meinem Kind Pom in der Endpunkt-Konfiguration verwenden, funktioniert das gut IF und nur, wenn ich -Djetty.port beim Aufruf von Maven explizit übergeben.

In meinem Kind pom:


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

Ich brauche jetty.port mit 8080 ausgefüllt werden, das ist das, was Anlegesteg standardmäßig, wenn -Djetty.port nicht explizit übergeben wird, und nach wie vor alle anderen Portwerte fangen Wenn das Befehlszeilenargument angegeben ist.

Antwort

9

Verwenden Sie den Abschnitt Eigenschaften, und fügen Sie eine jetty.port Eigenschaft mit einem Standardwert:

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

Danke. Das war nicht zu schwer :-) Ich nehme diesen Beitrag als Antwort an, sobald der Timer abgelaufen ist. – John

+2

Dies funktioniert nicht. – Bobo

+1

Ja - es funktioniert auch nicht für mich. Ich kann -Djetty.port = 8080 an der Befehlszeile tun, aber in der Pom nicht funktioniert. – hba

7

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> 

Wenn Sie eine neuere Version von Anlegestelle verwenden Plugin, verwenden Sie die folgende Konfiguration:

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

Sie könnten stattdessen die Anschlüsse in einer Standard-Anlegesteg XML-Konfigurationsdatei konfigurieren und seine Lage in die jettyXml Parameter setzen. Beachten Sie, dass seit Anlegesteg-9.0 nicht mehr möglich ist, einen https-Anschluss direkt in der pom.xml zu konfigurieren: Sie Anlegesteg XML-Konfigurationsdateien verwenden müssen es zu tun.
Etwas wie:

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

würde den Trick, mit jetty.xml Dateiinhalt:


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

das Protokoll Siehe nach ‚mvn jetty: run ', sollte am Ende etwas wie zeigen:
2013-09 -05 09: 49: 05,047: INFO: oejs.ServerConnector: main: Gestartet [email protected]{HTTP/1.1}{0.0.0.0: }

Sie müssen 7 Maven 3 und Java verwenden für Diese Version des Plugins.