2010-07-26 16 views
8

Sto lavorando a una suite di test di integrazione e ho una domanda per te.Maven - POM: Come modificare la porta del jetty in modo che possa essere recuperata in seguito?

Il mio padre gen definisce l'utilizzo del plugin jetty con l'obiettivo: run-war. Devo fare la porta che il molo ascolta cambiabile tramite la linea di comando. Questo può essere ottenuto passando -Djetty.port = 8099 per esempio.

Nel progetto figlio, è necessario utilizzare questo numero di porta per configurare l'endpoint per alcuni test SOAP che è necessario eseguire sul servizio ospitato dal molo.

Se uso $ {jetty.port} nel mio figlio pom nella configurazione del punto finale, questo funziona bene SE e solo SE passaggio esplicito -Djetty.port quando si richiama Maven.

Nel mio pom bambino:


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

Ho bisogno jetty.port da compilare con i 8080 che è quello di default pontile a se -Djetty.port non è esplicitamente passato, e ancora prendere tutti gli altri valori di porta se l'argomento della riga di comando è specificato.

risposta

9

Utilizzare la sezione proprietà, e aggiungere una proprietà jetty.port con un valore predefinito:

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

Grazie. Non è stato troppo difficile :-) Accetto questo post come risposta non appena scade il tempo. – John

+2

Questo non funziona. – Bobo

+1

Sì, non funziona neanche per me. Posso fare -Djetty.port = 8080 alla riga di comando, ma mettere nel pom non funziona. – hba

7

config Maven molo 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> 

Se si desidera utilizzare una versione più recente di pontile plug-in, utilizzare la seguente configurazione:

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

Si potrebbe invece configurare i connettori in un file di configurazione xml standard del jetty e inserirne la posizione nel parametro jettyXml. Notare che poiché jetty-9.0 non è più possibile configurare un connettore https direttamente nel pom.xml: è necessario utilizzare i file di configurazione jetty xml per farlo.
Qualcosa di simile:

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

farebbe il trucco, con il contenuto del file 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> 

visualizzare il registro dopo il 'molo mvn: run ', alla fine dovrebbe mostrare qualcosa come:
2013-09 -05 09: 49: 05,047: INFO: oejs.ServerConnector: principale: [email protected]{HTTP/1.1}{0.0.0.0 Iniziata }

dovrai usare Maven 3 e Java 7 per questa versione di plugin.

Problemi correlati