如何快速高效地開發和調試基於gradle管理的web應用

本文探討如何高效快速地開發和調試基於gradle管理的web應用。 

gradle是新一代應用構建、版本發佈管理工具,功能強大而靈活,號稱將取代maven的霸主地位,可是目前在開發和調試web應用程序方面還有不少不足,效率低下。 

那麼咱們能不能基於gradle強大而靈活的功能,探尋出一種簡單、高效、便捷的方法,以便在調試web應用過程當中修改程序無需重啓應用服務器和應用呢?答案是確定的,接下來就給你們分享bboss開發團隊在使用gradle開發調試web應用所使用的行之有效的工具和方法。 

工具和方法涉及的技術 

1.gradle自定義sourceSet測試源碼集技術 
2.jetty嵌入式啓動技術 
3.gradle compileOnly級別包依賴技術(gradle 3.0及以上版本支持) 
4.採用bboss ioc管理jetty 應用配置 

工具集成和使用 

咱們直接使用本文附件中包含的工具小程序來調試web應用,這是一個通用的小工具,能夠按照如下步驟將這個工具集成到本身web應用對應的gradle工程中。注意:咱們將工具對應的程序放置到工程的測試源碼目錄下面,將工具依賴的jar包級別定義爲compileOnly,這樣能夠避免將工具對應的程序、配置和jar發佈到最終的項目版本中(真正的綠色無污染)。 

第一步 集成調試web應用工具 
工具包含啓動jetty容器的程序和配置文件,這些文件包含在本文附件中,點擊這裏下載:下載 

 

將解壓後的test目錄中的org目錄複製到gradle工程的測試源碼目錄下便可,gradle能夠靈活指定項目的測試源碼目錄,本文對應的是test目錄,經過其中的類org.eclipse.jetty.webapp.JettyStart來啓動和調試web應用。 

下面說明一下目錄test\org\eclipse\jetty\webapp下面三個文件的做用: 

1.jetty.xml 
文件內容: html

Xml代碼   收藏代碼
  1. <properties>  
  2.     <property name="port" value="9081"/>    
  3.     <property name="context" value="wowo-frontend"/>    
  4.     <property name="webxml" value="./WebRoot/WEB-INF/web.xml"/>    
  5.     <property name="resourceBase" value="./WebRoot"/>    
  6.       
  7. </properties>  


文件做用:配置jetty端口port,應用上下文context,應用部署描述文件web.xml位置,應用路徑resourceBase,這兩個路徑都是相對於gradle工程根目錄,能夠根據須要調整相關配置。 

2.webdefault.xml 
這個文件內容比較多,已經配置好,無需修改,咱們只需關注其中一個配置項 
useFileMappedBuffer: java

Xml代碼   收藏代碼
  1. <init-param>  
  2.       <param-name>useFileMappedBuffer</param-name>  
  3.       <param-value>false</param-value>  
  4.     </init-param>  


useFileMappedBuffer必須設置爲false,不然在調試的過程當中js文件會被鎖定,致使js文件沒法進行修改。 

3. JettyStart.java 
在JettyStart的Main方法中,利用bboss ioc加載配置文件jetty.xml,而後啓動jetty服務器和web應用。經過執行JettyStart程序,就能夠像調試和運行普通的java程序同樣調試和運行gradle管理web應用,能夠在調試過程當中自動加載修改的程序和資源配置文件,避免因修改程序而反覆構建、發佈和部署應用,大大提高開發和調試的效率。目前工具只支持Http協議,能夠經過擴展JettyStart類方便地提供對Https協議的支持。 

上述的三個文件中,只有jetty.xml會根據項目的實際狀況進行修改和調整,通常狀況下其餘兩個文件不須要改動,除非在調試過程當中須要使用更多的jetty功能,好比增長對https協議的支持,那麼能夠經過修改JettyStart.java程序並在jetty.xml文件中增長相關的配置項,就能夠靈活地實現。 

第二步 配置工具依賴並加載工具源碼和配置文件集 
在工程的build.gradle文件中配置工具依賴並加載工具源碼和配置文件集 
1.修改自定義源碼集 
在test測試源碼塊中加載工具對應源程序和配置文件(兩個xml文件和一個java類) web

Java代碼   收藏代碼
  1. sourceSets {  
  2.     main {  
  3.         java {  
  4.             srcDir 'src'  
  5.              
  6.         }  
  7.        resources{  
  8.             srcDir 'resources'  
  9.             srcDir 'src' exclude '**/*.java'  
  10.         }  
  11.     }  
  12.     test {  
  13.         java {  
  14.             srcDir 'test' //包含JettyStart.java 文件  
  15.         }  
  16.         resources {  
  17.         srcDir 'test'  exclude '**/*.java'//包含兩個xml文件  
  18.         }  
  19.            
  20.     }  
  21.       
  22. }  



2.在dependencies添加運行jetty容器和web應用所需的jar包 
以compileOnly級別添加啓動jetty容器和web應用所需的第三方jar包,這樣在最終發佈應用版本中不會包含這些額外引入jar包: apache

Java代碼   收藏代碼
  1. dependencies {   
  2.       
  3.      compileOnly (              
  4.                
  5.            [group: 'javax.el', name: 'javax.el-api', version: '2.2.1', transitive: false],  
  6.            [group: 'org.eclipse.jetty.aggregate', name: 'jetty-all-server', version: '8.1.19.v20160209', transitive: false],  
  7.            [group: 'org.eclipse.jetty.orbit', name: 'org.apache.jasper.glassfish', version: '2.2.2.v201112011158', transitive: false],  
  8.            [group: 'org.eclipse.jetty.orbit', name: 'javax.servlet.jsp', version: '2.2.0.v201112011158', transitive: false],  
  9.           
  10.           [group: 'org.eclipse.jetty.orbit', name: 'org.apache.taglibs.standard.glassfish', version: '1.2.0.v201112081803', transitive: false],  
  11.            [group: 'org.eclipse.jetty.orbit', name: 'com.sun.el', version: '2.2.0.v201108011116', transitive: false],  
  12.              
  13.             
  14.     )      
  15.       
  16.      compileOnly (              
  17.             
  18.             [group: 'javax.servlet', name: 'javax.servlet-api', version: "3.0.1", transitive: false],  
  19.             [group: 'javax.servlet.jsp', name: 'javax.servlet.jsp-api', version: '2.3.1', transitive: false],  
  20.             
  21.         )  
  22.       //bboss-core包是可選的,若是在項目的compile依賴中已經包含了bboss-core包的引用,那麼能夠把下面對bboss-core包的引用去掉,不然必須加上  
  23.       compileOnly (              
  24.             
  25.             [group: 'com.bbossgroups', name: 'bboss-core', version: "5.0.1", transitive: true],  
  26.             
  27.         )  
  28. }  

     

本文的附件中(下載)包含了能夠做爲參考的build.gradle樣例。 

第三步 運行和調試web應用     
完成第一步和第二步後,咱們就能夠經過JettyStart程序來運行和調試web應用了, 
首先在web工程右鍵菜單中gradle sts插件的Refresh All功能來刷新和加載最新的build.gradle配置文件,如圖示: 

 

而後參考如下圖示來調試或者運行 JettyStart,便可調試或者運行gradle管理的web應用了: 

小程序

  www.togv.net/guanlipeixun/4ws6xllk3xl3ciz8reaf.htmapi

  www.togv.net/guanlipeixun/nscr433em4n4niblrnex.htm服務器

  www.365128.com/user/aqiandao/65.htmlapp

  www.365128.com/user/aqiandao/66.htmlfrontend

  www.365128.com/user/aqiandao/67.htmleclipse

  www.365128.com/user/aqiandao/68.html

  www.365128.com/user/aqiandao/70.html

  www.365128.com/user/aqiandao/71.html

  www.365128.com/user/aqiandao/72.html

  www.365128.com/user/aqiandao/64.html

相關文章
相關標籤/搜索