本节经过一个简单的javaweb项目来体会gradle的使用java
构建一个javaweb项目,搭建jsp+servlet开发环境
能够将需求分解为两步:git
首先在idea中建立一个空的gradle项目
github
建立以下目录-文件结构
这里须要特别说明,下面的目录结构与文件组织方式是gradle的java插件和war插件对于java和javaweb项目的默认约定结构,若是该项目遵照约定,则几乎不须要配置源代码文件、web.xml、测试文件等的路径,这也是体现gradle汲取了maven的优势:约定优于配置。
web
在构建脚本中写入以下内容api
group 'com.shy' version '1.0-SNAPSHOT' apply plugin:'java' apply plugin:'war' apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'//这里使用了gradle官方提供的Gretty插件来完成传统web容器的功能,这个插件提供了各类run、start、debug 的task,作实验比较方便 //执行jar任务时会在jar文件代码清单中加入Main-Class头 jar{//Groovy的闭包委托特性 manifest{ attributes 'Main-Class':'com.shy.todo.ToDoApp' } } repositories{ mavenCentral();//对maven central 2仓库访问的快捷方式 } dependencies{ providedCompile 'javax.servlet:servlet-api:2.5' runtime 'javax.servlet:jstl:1.2' } task wrapper(type:Wrapper ){ gradleVersion = '4.3' }
4.web.xml配置以下浏览器
使用一个ToDoServlet来接受全部的请求闭包
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>ToDoServlet</servlet-name> <servlet-class>com.shy.todo.web.ToDoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ToDoServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
5.ToDoServlet负责转发请求app
public class ToDoServlet extends HttpServlet{ private ToDoRepository toDoRepository = new InMemoryToDoRepository(); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String servletPath = req.getServletPath(); String view = processRequest(servletPath,req); RequestDispatcher dispatcher = req.getRequestDispatcher(view); dispatcher.forward(req,resp); System.out.println("hello"); } private String processRequest(String servletPath,HttpServletRequest request){ if(servletPath.equals("/all")){ return "/jsp/todo-list.jsp"; }else { return "not-found.jsp"; } } }
以上即是项目源码,能够看出若是遵照gradle的插件对于项目的一系列约定,则构建脚本很是简洁,实际上构建java项目只须要一行:jsp
apply plugin:'java'
而构建web项目也仅须要以下脚本,声明插件和依赖maven
apply plugin:'war' repositories{ mavenCentral();//对maven central 2仓库访问的快捷方式 } dependencies{ providedCompile 'javax.servlet:servlet-api:2.5' runtime 'javax.servlet:jstl:1.2' }
因为使用了Gretty插件,则编译打包部署的步骤仅须要执行一个task
gradle appRun
而后即可在浏览器中访问:默认访问地址为localhost:8080/[项目名],这个请求被servlet拦截到并进行处理。