Search code examples
gradlejettygretty

TaskExecutionException for gradle jettyRun


I am following the book 'Gradle in Action' page 67 attempting to call:

$ gradle jettyRun

...
* What went wrong:
Execution failed for task ':jettyRun'.
> org/eclipse/jetty/http/HttpField
...

With the --stacktrace option I obtain the following message:

...
* Exception is:
org.gradle.api.tasks.TaskExecutionException:Execution failed for task ':jettyRun'
...
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.http.HttpField
...

My project is todo-webapp as per the book page 67:

$ tree
├── build.gradle
├── src
│   └── main
│       ├── java
│       │   └── com
│       │       └── manning
│       │           └── gia
│       │               └── todo
│       │                   ├── model
│       │                   │   └── ToDoItem.java
│       │                   ├── repository
│       │                   │   ├── InMemoryToDoRepository.java
│       │                   │   └── ToDoRepository.java
│       │                   └── web
│       │                       └── ToDoServlet.java
│       └── webapp
│           ├── css
│           │   ├── base.css
│           │   └── bg.png
│           ├── jsp
│           │   ├── index.jsp
│           │   └── todo-list.jsp
│           └── WEB-INF
│               └── web.xml

and my build file is as follows:

$ cat build.gradle

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'jetty'

repositories {
    mavenCentral()
}
dependencies {
    providedCompile 'javax.servlet:servlet-api:2.5',
            'javax.servlet.jsp:jsp-api:2.1'
    runtime 'javax.servlet:jstl:1.1.2',
            'taglibs:standard:1.1.2'
}

following various threads online I have been trying to add a dependency to my build file such as:

jettyRun {
  dependencies {
    providedRuntime 'org.eclipse.jetty:jetty-http:9.4.0.RC0'
  }
}

or indeed add the jar directly /usr/share/java/jetty9-http with runtime files(...). None of these worked. I am not too sure what to try next. Any suggestion is greatly appreciated.

EDIT: As indicated by Vampire, all I had to do is remove apply plugin: 'jetty' and instead following the line apply plugin: 'war', add the line:

apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'

Then use gradle appRun instead of gradle jettyRun. All this is coming from the page Getting started of the gretty plugin.


Solution

  • As you can see at https://docs.gradle.org/current/userguide/userguide_single.html#jetty_plugin, the Jetty plugin is deprecated. Maybe you should try the Gretty plugin as suggested in the docs. :-)