Есть ли простой способ запустить Jetty 8 из Gradle (например, с JettyRun)? - PullRequest
2 голосов
/ 25 ноября 2011

Не повезло, мне нужна пристань 8 для правильной работы со спреем / аккой (это проект scala).С более старой версией, используемой jettyRun, я получаю сообщение об ошибке: java.lang.NoClassDefFoundError: org / eclipse / jetty / extension / ContinuationListener Можно ли создать какую-то простую задачу для выполнения работы, которую выполняет jettyRun, но с молнией 8?

В худшем случае я могу использовать встроенную версию молы с войной, которую я строю, но я был бы счастливчтобы увидеть более простое решение, если есть ...

Ответы [ 3 ]

1 голос
/ 05 июня 2015

Pitor, почему вы не добавили свой отличный ответ от здесь ?

Я адаптировал его ниже, чтобы использовать версию Jetty 9, чтобы зависеть отwar задача и использовать то же имя задачи, что и у подключаемого модуля Jetty (например, jettyRun).

configurations {
    jetty
}

dependencies {
    jetty "org.eclipse.jetty:jetty-runner:9.2.11.v20150529"
}

task jettyRun(type: JavaExec, dependsOn: war) {
    main = "org.eclipse.jetty.runner.Runner"
    args = [war.archivePath]
    classpath configurations.jetty
}

Использование:

gradle jettyRun
0 голосов
/ 29 апреля 2013

Я думаю, что уже немного поздно для ответа :) Но я опубликую его для тех, кто будет гуглить вокруг для того же.

Я столкнулся с той же проблемой, пытаясь запустить приложение скалатра с Gradle. Я нашел этот плагин, и он просто работает - https://github.com/martins1930/jettyMulti

0 голосов
/ 26 ноября 2011

Поскольку я не смог найти хорошего решения на уровне сборки Gradle, я решил использовать встроенный причал.Вот класс scala:

import org.eclipse.jetty.server.Server
import org.eclipse.jetty.webapp.WebAppContext
import org.eclipse.jetty.server.bio.SocketConnector

object JettyServer {

  def main(args: Array[String]) {
    val server = new Server
    val context = new WebAppContext
    val connector = new SocketConnector

    connector.setMaxIdleTime(1000 * 60 * 60)
    connector.setPort(8080)

    context.setServer(server)
    context.setWar(args(0))

    server.setConnectors(Array(connector))
    server.setHandler(context)

    try {
      server.start();
      server.join();
    } catch {
      case e: Exception => e.printStackTrace();
    }
  }
}

А потом в build.gradle:

apply plugin: "application"

mainClassName = "com.mycompany.myproject"
run.args = [war.archivePath]
task jettyRun(dependsOn: run)

И все работает:)

...