0. 目标
创建一个名为gradle-web的Java Web项目。
1. 创建项目目录结构
Gradle采用了基于约定构建(build-by-convention)的方式识别源文件。默认情况下,使用Gradle构建的Java项目源代码应放在src/main/java中。
mkdir -p gradle-web/src/main/java
如果是JavaSE项目,创建这一个目录就行。JavaWeb项目还需要在main目录下创建Web应用根目录webapp,这个目录中将存放动态页面JSP,或静态资源HTML、CSS、JavaScript和图片资源。在webapp中还要创建一个名为WEB-INF的目录,WEB-INF存放像web.xml这样不能被客户端直接访问的文件。
mkdir -p gradle-web/src/main/webapp/WEB-INF
在webapp创建一个静态HTML页面index.html,这个页面是之后访问的目标页面。
<html>
<head>
<title>Gradle Java Web Page</title>
</head>
<body>
<p>Hello Gradle Java Web!</p>
</body>
</html>
在目录gradle-web下创建文件build.gradle。
创建完以上目录和文件之后,项目结构应如下:
/gradle-web
|- build.gradle
|- src
|- main
|- java // source root
|- webapp // web-app root
|- WEB-INF
|- index.html
2. build.gradle文件
Gradle本身仅是一个任务运行器(Task Runner),它并不知道如何编译Java源文件,也不知道这些源文件存放在哪。要想编译Java文件或添加其他功能,则需要应用插件plugin。Gradle中的plugin封装了一些可重用的task和configuration。
在build.gradle中添加下面代码
apply plugin: 'java' // Compile Java code, run unit tests, and assemble a JAR artifact
apply plugin: 'war' // Supports web application development and building WAR files
apply plugin: 'jetty'// Jetty provides an embedded servlet container
// Jetty property configuration
httpPort = 8080
stopPort = 9090
stopKey = 'stopKey'
3. 在Jetty中运行
build项目,执行命令gradle build
$ gradle build
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build
BUILD SUCCESSFUL
Total time: 8.343 secs
在Jetty中运行项目,执行命令gradle jettyRun或gradle jettyRunWar
$ gradle jettyRun
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jettyRun
现在就可以在浏览器中访问http://localhost:8080/gradle-web/index.html。访问成功则表示用Gradle构建JavaWeb项目成功。
停止Jetty,执行命令gradle jettyStop
$ gradle jettyStop
:jettyStop
BUILD SUCCESSFUL
Total time: 4.322 secs
参考资料
- Gradle Tutorial : Part 4 : Java Web Applications
- Gradle与Makefile构建工具的对比
- Balaji Varanasi, Sudha Belida. Introducing Gradle.
- Kunal Dabir, Abhinandan. Gradle Essentials.