本節經過一個簡單的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攔截到並進行處理。