2011-08-23 24 views
16

sto invocando il "pontile: run" gol con la seguente configurazione del plugin:Configura la registrazione per il plug-in Maven di Jetty?

<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>7.4.4.v20110707</version> 
    <configuration> 
    <scanIntervalSeconds>5</scanIntervalSeconds> 
    <connectors> 
     <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> 
     <port>80</port> 
     </connector> 
    </connectors>   
    </configuration> 
</plugin> 

Jetty si rifiuta di registrare qualsiasi cosa per SLF4J, nonostante il fatto che il mio progetto dichiara SLF4J come una dipendenza. Se passo "-Dorg.eclipse.jetty.util.log.DEBUG = true" alla JVM, Jetty emette tonnellate di log ma sembrano andare su stderr invece che su slf4j. Qualche idea?

risposta

12

Rispondendo alla mia domanda:

  1. Plugin non vedono le dipendenze del progetto. È necessario specificare <dependencies> all'interno dello <plugin>.

  2. È necessario specificare un'implementazione slf4j concreta, come il logback. Specificare slf4j non è abbastanza.

Il risultato finale dovrebbe essere simile a questo:

<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>7.4.4.v20110707</version> 
    <configuration> 
     <scanIntervalSeconds>5</scanIntervalSeconds> 
     <connectors> 
     <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> 
      <port>80</port> 
     </connector> 
     </connectors>   
    </configuration> 
    <dependencies> 
     <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>0.9.29</version> 
     </dependency> 
    </dependencies> 
    </plugin> 
+0

Nota, per configurare la registrazione basta lasciare esperto di sapere dove il file di configurazione è: mvn verificare -Dlogback.configurationFile =/path/to/logback.xml – Mike

+0

C'è un aggiornamento per la versione 9? Non vedo alcun log da Jetty quando utilizzo questa configurazione. – user64141

+0

@ user64141 Non sono a conoscenza di eventuali modifiche. Detto questo, non uso più il plugin Maven Jetty. Ora invoco Jetty da una normale classe Java. – Gili

5

Estendere la risposta di Gili un po '; usando le proprietà-maven-plugin è un modo conveniente per impostare le proprietà di sistema invece di doverle specificare sulla riga di comando. Fornisco esempi sia per il logback che per log4j. Aggiungi questo blocco plugin al tuo pom.xml in aggiunta alla configurazione del jetty-maven-plugin nella risposta di Gili.

Logback:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0-alpha-2</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>set-system-properties</goal> 
     </goals> 
     <configuration> 
     <properties> 
      <!-- makes jetty log the exception if it fails to initialize slf4j --> 
      <property> 
      <name>org.eclipse.jetty.util.log.IGNORED</name> 
      <value>true</value> 
      </property> 
      <!-- Location of logback config --> 
      <property> 
      <name>logback.configurationFile</name> 
      <value>/path/to/logback.xml</value> 
      </property> 
     </properties> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

Log4j:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0-alpha-2</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>set-system-properties</goal> 
     </goals> 
     <configuration> 
     <properties> 
      <!-- makes jetty log the exception if it fails to initialize slf4j --> 
      <property> 
      <name>org.eclipse.jetty.util.log.IGNORED</name> 
      <value>true</value> 
      </property> 
      <!-- this tells where the log4j configuration is --> 
      <property> 
      <name>log4j.configuration</name> 
      <value>file:./src/main/resources/log4j.properties</value> 
      </property> 
      <!-- this can be uncommented to debug startup log4j itself, 
       e.g. how it locates log4j.properties etc --> 
      <!-- 
      <property> 
      <name>log4j.debug</name> 
      <value></value> 
      </property> 
      --> 
     </properties> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

Anche per log4j, utilizzare naturalmente la seguente dipendenza per il pontile-maven-plugin invece di logback-classico:

<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.4</version> 
    </dependency> 
    </dependencies> 
</plugin> 
Problemi correlati