gradle jettyRun 的 TaskExecutionException
TaskExecutionException for gradle jettyRun
我正在关注本书 'Gradle in Action' 第 67 页,尝试调用:
$ gradle jettyRun
...
* What went wrong:
Execution failed for task ':jettyRun'.
> org/eclipse/jetty/http/HttpField
...
使用 --stacktrace
选项我得到以下消息:
...
* Exception is:
org.gradle.api.tasks.TaskExecutionException:Execution failed for task ':jettyRun'
...
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.http.HttpField
...
根据书第 67 页,我的项目是 todo-webapp
:
$ 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
我的构建文件如下:
$ 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'
}
根据各种在线帖子,我一直在尝试向我的构建文件添加依赖项,例如:
jettyRun {
dependencies {
providedRuntime 'org.eclipse.jetty:jetty-http:9.4.0.RC0'
}
}
或者直接添加 jar /usr/share/java/jetty9-http
和 runtime files(...)
。 None 其中有效。我不太确定接下来要尝试什么。非常感谢任何建议。
编辑: 正如 Vampire 所指出的,我所要做的就是删除 apply plugin: 'jetty'
并在 apply plugin: 'war'
行之后添加行:
apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'
然后使用 gradle appRun
而不是 gradle jettyRun
。所有这些都来自 gretty 插件的页面 Getting started。
如您在 https://docs.gradle.org/current/userguide/userguide_single.html#jetty_plugin 中所见,Jetty 插件已弃用。也许您应该按照文档中的建议尝试 Gretty 插件。 :-)
我正在关注本书 'Gradle in Action' 第 67 页,尝试调用:
$ gradle jettyRun
...
* What went wrong:
Execution failed for task ':jettyRun'.
> org/eclipse/jetty/http/HttpField
...
使用 --stacktrace
选项我得到以下消息:
...
* Exception is:
org.gradle.api.tasks.TaskExecutionException:Execution failed for task ':jettyRun'
...
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.http.HttpField
...
根据书第 67 页,我的项目是 todo-webapp
:
$ 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
我的构建文件如下:
$ 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'
}
根据各种在线帖子,我一直在尝试向我的构建文件添加依赖项,例如:
jettyRun {
dependencies {
providedRuntime 'org.eclipse.jetty:jetty-http:9.4.0.RC0'
}
}
或者直接添加 jar /usr/share/java/jetty9-http
和 runtime files(...)
。 None 其中有效。我不太确定接下来要尝试什么。非常感谢任何建议。
编辑: 正如 Vampire 所指出的,我所要做的就是删除 apply plugin: 'jetty'
并在 apply plugin: 'war'
行之后添加行:
apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'
然后使用 gradle appRun
而不是 gradle jettyRun
。所有这些都来自 gretty 插件的页面 Getting started。
如您在 https://docs.gradle.org/current/userguide/userguide_single.html#jetty_plugin 中所见,Jetty 插件已弃用。也许您应该按照文档中的建议尝试 Gretty 插件。 :-)