どのようにgroovy/gradleで特定の戦争と桟橋7+を実行するには?

私はgradtyビルドでJetty 7+を実行したいのですが、jettyRunでこれを行う方法がないように不運に見えます。だから、私が望むものを達成するための最も簡単なアイデアはカスタムターゲットを使うことでしょう:

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

不運なことに、私はgradleで始まったばかりで、グルーヴィーも知らないので、適切なターゲットを作成するのは難しいです。私はインターネットを見ていましたが、解決策を見つけることができませんでした。 誰もが桟橋で既存の瓶を実行することができますいくつかのサンプルgroovyコードで私を打つことができますか?

9

4 答え

わかりました。私は、jettyをリポジトリから直接使用して実行する方法を見つけました。

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
}
15
追加された
Jetty 8を使用するタスクを作成するにはどうすればいいですか?warをパッケージ化してサーバーにデプロイするjettyRunWarを模倣しますか?
追加された 著者 Mick Knutson,
どのようにコンテキストパスを指定するのですか?私は試みました - パスcontextPath。それは動作しません。私はログでこれを見ることができます:o.e.j.w.WebAppContext {/、null}
追加された 著者 singhspk,

ここには、桟橋のタスクを使用して、作業バージョンがあります。これは最終的に私に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")
}
3
追加された
私はIPアドレスがここに与えられるのを見ない。私の主な目標は、同じローカルエリア内の他のデバイス経由でWebサービスを接続することです。
追加された 著者 masiboo,

There is a jetty-eclipse-plugin that allows you to run newer versions of jetty https://github.com/Khoulaiz/gradle-jetty-eclipse-plugin

3
追加された

jettyプラグインは現在桟橋6.1.25をサポートしています

次のようなものを使うことができます:

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 {
      ...
    }
  }
}
1
追加された
そうです、私はこのようにすることは可能ですが、私はこの行が気に入らない: "jettyRoot = '/ path/to/your/jetty/root'"桟橋をランタイム依存関係として追加することは可能ですか?そして、どういうわけかgradleが(フェッチ後に)それを保存したパスを取得しますか?
追加された 著者 Piotr Kukielka,
jetty7を依存関係として追加することができます:{jetty7} dependencies {jetty7 "org.mortbay.jetty:jetty:+"} ext.jettyRoot = configurations.jetty7
追加された 著者 CaTalyst.X,