Как запустить причал 7+ с указанной войной с groovy/gradle?

Я хочу запустить Jetty 7+ со сборкой gradle, но, к сожалению, похоже, что с помощью jettyRun это невозможно. Поэтому, вероятно, самой простой идеей для достижения того, чего я хочу, было бы использование пользовательской цели:

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

К сожалению, я только начал с gradle и не знаю groovy, поэтому мне сложно создать правильную цель. Я искал в Интернете, но я не смог найти никакого решения. Может ли кто-нибудь поразить меня каким-нибудь образцом отличного кода, который может запускать существующую банку с помощью причала?


person Piotr Kukielka    schedule 25.11.2011    source источник
comment
возможный дубликат есть ли простой способ запустить jetty 8 из gradle (например, с помощью jettyRun)?   -  person Nick Grealy    schedule 05.06.2015


Ответы (4)


Хорошо, я узнал, как запустить его с помощью причала прямо из репозитория:

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
}
person Piotr Kukielka    schedule 10.12.2011
comment
Как я могу создать задачу, которая использует Jetty 8 и имитирует jettyRunWar, которая упаковывает войну и развертывает ее на сервере? - person Mick Knutson; 31.10.2012
comment
Как указать контекстный путь? Я попробовал --path contextPath. Это не работает. Я вижу это в журналах: o.e.j.w.WebAppContext{/,null} - person singhspk; 11.03.2014

Вот рабочая версия, использующая задачи муравья пристани. Это, наконец, дало мне надлежащий контроль с помощью 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")
}
person stolsvik    schedule 02.08.2013
comment
Я не вижу никакого IP-адреса, указанного здесь. Моя основная цель — подключить мой веб-сервис через другие устройства в той же локальной области. - person masiboo; 27.10.2014

Существует плагин jetty-eclipse-plugin, который позволяет запускать более новые версии jetty https://github.com/Khoulaiz/gradle-jetty-eclipse-plugin

person Matthew Payne    schedule 25.10.2013

Плагин причала поддерживает причал 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 {
      ...
    }
  }
}
person tinca    schedule 09.12.2011
comment
Да, я знаю, что можно сделать так, но мне не нравится эта строчка: jettyRoot = '/path/to/your/jetty/root'. Можно ли добавить причал в качестве зависимости времени выполнения и каким-то образом получить путь, по которому gradle сохранил его (после извлечения)? - person Piotr Kukielka; 10.12.2011
comment
Вы можете добавить причал 7 в качестве зависимости: - person CaTalyst.X; 06.02.2014