2011-11-25 7 views
8

Voglio eseguire Jetty 7+ con build gradle, ma sembra sfortunato che non ci sia modo di farlo con jettyRun. Quindi probabilmente più semplice idea per ottenere ciò che voglio sarebbe quella di utilizzare bersaglio personalizzato:Come eseguire jetty 7+ con war specificato con groovy/gradle?

task runJetty << { 
    def server = new Server() 
    // more code here 
    server.start() 
    server.join() 
} 

Sfortunato Ho appena iniziato con Gradle e non so neanche groove, quindi è difficile per me creare la corretta destinazione. Stavo cercando su internet ma non sono riuscito a trovare alcuna soluzione. Qualcuno può colpirmi con qualche codice groovy di esempio che può eseguire il jar esistente con il jetty?

+0

possibile duplicato del [C'è un modo semplice per eseguire molo 8 da Gradle (come con jettyRun)? ] (http://stackoverflow.com/questions/8263168/is-there-any-easy-way-to-run-jetty-8-from-gradle-like-with-jettyrun) –

risposta

14

Ok, ho scoperto come eseguire utilizzando molo direttamente dal repository:

jettyVersion = "8.1.0.RC0" 

configurations { 
    jetty8 
} 

dependencies { 
    jetty8 "org.mortbay.jetty:jetty-runner:$jettyVersion" 
} 

task runJetty8(type: JavaExec) { 
    main = "org.mortbay.jetty.runner.Runner" 
    args = [war.archivePath] 
    classpath configurations.jetty8 
} 
+0

COME POSSO creare un'attività che usi Jetty 8 e imita jettyRunWar che impacchetta la guerra e la distribuisce al server? –

+0

Come si specifica il percorso di contesto? Ho provato --path contextPath. Non funziona. Posso vederlo nei registri: o.e.j.we.WebAppContext {/, null} – singhspk

1

molo plugin supporta pontile 6.1.25 attualmente

Si può usare qualcosa di simile:

jettyRoot = '/path/to/your/jetty/root' 
task runJetty7 << { 
    description = "Runs jetty 7" 
    ant.java(dir: jettyRoot, jar: jettyRoot + '/start.jar', failOnError: 'true', fork: 'true') { 
    classpath { 
     ... 
    } 
    } 
} 
+0

Sì, so che è possibile fallo in questo modo, ma non mi piace questa riga: "jettyRoot = '/ path/to/your/jetty/root'". È possibile aggiungere il molo come dipendenza di runtime e in qualche modo ottenere il percorso in cui Gradle lo ha salvato (dopo il recupero)? –

+0

Si potrebbe aggiungere molo 7 come dipendenza: configurazioni { jetty7 } dipendenze { jetty7 "org.mortbay.jetty: molo: +" } ext.jettyRoot = configurations.jetty7 –

3

Ecco una versione funzionante, utilizzando le attività di formica jetty. Questo finalmente mi ha permesso il controllo corretto con deamon = true.

configurations { jetty } 
dependencies { jetty 'org.eclipse.jetty:jetty-ant:9.0.4.v20130625' } 
task jetty(dependsOn: build) << { 
    ant.taskdef(name: 'jettyRun', classname: 'org.eclipse.jetty.ant.JettyRunTask', classpath: configurations.jetty.asPath, loaderref: "jetty.loader") 
    ant.typedef(name: "connector", classname: "org.eclipse.jetty.ant.types.Connector", classpath: configurations.jetty.asPath, loaderref: "jetty.loader") 
    ant.jettyRun(daemon:true, stopPort: 8999, stopKey: "STOP") { 
     webApp(war: THE_WAR_PRODUCING_TASK.archivePath, contextPath: '/context') 
     connectors { connector(port: 9000) } 
     systemProperties { 
      systemProperty(name: 'environment.type', value: 'development') 
     } 
    } 
} 
task jettyStop << { 
    ant.taskdef(name: 'jettyStop', classname: 'org.eclipse.jetty.ant.JettyStopTask', classpath: configurations.jetty.asPath) 
    ant.jettyStop(stopPort: 8999, stopKey: "STOP") 
} 
+0

Non vedo qui alcun indirizzo IP. Il mio obiettivo principale è quello di connettere il mio servizio web tramite altri dispositivi nella stessa area locale. – masiboo