Gradle+IDEA使用說明


Gradle+IDEA使用說明

導語:

IDEA擁有大量的JAVA開發者擁護,相比於開源的eclipse,IDEA擁有更簡潔直觀的界面,擁有更強大的自動補全功能,號稱能“一路敲回車完成編碼”。如果把IDEA和eclipse比作手機系統,IDEA就好比IOS,美觀、強大、人性化、傻瓜化,官方就幫你解決了大部分問題與操作。eclipse更像android,自由、開放、高度可定制,通過一系列的插件也可以達到IDEA同樣的、甚至更個性化的體驗,但是操作不免讓人感覺復雜、上手難。

Gradle作為build工具的新星,受到谷歌的大力擁護,直接欽定為AS的御用build工具,在java web方面也大有取代maven上位的趨勢,已成為IDEA默認支持的構建工具。gradle最大的優勢是可以直接在腳本中運行groovy語言,這就使得gradle具有非常強大的擴展性。

使用IDEA+gradle所組成的工具為項目開發帶來了極大的便利,熟練的使用它們相信會為我們帶來事半功倍的效果

一,何為build工具

我們寫一個java web程序大致需要以下步驟呢:

  1. 從版本控制系統下載基礎源碼
  2. 編寫程序,並在這過程中復制相應的依賴包到classpath目錄下
  3. 編譯java 文件,形成jar包
  4. 運行單元測試
  5. 生成代碼覆蓋度報告和測試報告
  6. 打包形成war文件
  7. 上傳到測試服務器上,進行部署

在以前,這些操作都是需要我們手動去完成的。比如當引入一個外部依賴時,我們要專門去相應的地方拷貝得到jar包,或者得到源碼編譯出jar包,然后復制到classpath目錄下。寫完代碼后,我們需要手動使用編譯工具編譯,然后手動去運行測試工具進行單元測試,如果沒問題的話,再手動打包成war包,然后手動上傳到服務器指定目錄部署。

一個項目下來我們將會在這些與寫代碼無關的事情上浪費大量時間,而這些行為很明顯是重復的,完全可以編寫出相應的程序來幫助我們自動的完成這一系列的操作。而且多人合作時,每個人使用的外部依賴庫的版本可能不一樣,當合並項目后有可能會因為版本的不同帶來BUG,而且這些BUG非常不容易讓人發現,人們急需一個統一管理第三方依賴的工具。於是build工具出現了。

二,在IDEA中創建一個gradle構建的java web項目

最新版的IDEA默認集成了gradle,不用安裝gradle程序就可以在IDEA中創建gradle管理的項目

1,創建項目

 
1.png

2,填寫項目ID

PS:引自百度知道

groupid和artifactId被統稱為“坐標”是為了保證項目唯一性而提出的,如果你要把你項目弄到maven本地倉庫去,你想要找到你的項目就必須根據這兩個id去查找搜索。

groupId一般分為多個段,這里我只說兩段,第一段為域,第二段為公司名稱。域又分為org、com、cn等等許多,其中org為非營利組織,com為商業組織。舉個apache公司的tomcat項目例子:這個項目的groupId是org.apache,它的域是org(因為tomcat是非營利項目),公司名稱是apache,artigactId是tomcat。

比如我創建一個項目,我一般會將groupId設置為cn.zr,cn表示域為中國,zr是我個人姓名縮寫,artifactId設置為testProj,表示你這個項目的名稱是testProj,依照這個設置,你的包結構最好是cn.zr.testProj打頭的,如果有個StudentDao,它的全路徑就是cn.zr.testProj.dao.StudentDao

 
2.png

3,配置gradle

 
3.png

4,填寫工程名

 
4.png

5,得到的最終目錄結構和build.gradle文件

 
5.png

三,gradle使用說明

gradle是一個工具,通過執行build.gradle來實現build的功能,build.gradle這個build腳本是需要程序員自己來編寫的,可以使用groovy語言來編寫,功能強大而且直觀。也可以直接引入其他人已經編寫好的腳本或工具來實現build,引入方法為通過apply plugin: 'plugin名'語句實現,plugin可以是build腳本也可以是java程序。

gradle官方提供了很多常用的build plugin,比如我們這次創建項目引入的‘war’plugin,他是繼承自‘java’這個plugin,在實現‘java’plugin中關於build java程序的基礎上,額外定義了java web項目目錄、打包war包等功能,剔除了打包jar包的功能,具體詳情可以在gradle官方文檔中查看到。

build操作通過引入相應的plugin基本就可以實現了,在平時的使用過程中,我們主要對gradle的操作是添加第三方依賴,讓gradle幫我們管理這些第三方依賴。

通過手動操作引入一個第三方依賴(例如spring core)

  1. 前往spring官網找到其提供的spring core下載地址
  2. 選擇一個需要的版本下載下來
  3. 解壓,將得到的jar包移動到我們項目的classpath目錄下

只需三步,看起來並不是很復雜。但是一個項目需要引入的第三方依賴的數量往往是十分巨大的,而且假如我們下載的spring core版本是4.3.6,並且這是一個多人共同協作的項目,當大家的工作合並起來時,如果有人使用的是4.2.1版本,我們是很難發現這個不同的,而這卻可能導致BUG。同時,要刪除某些不再需要的依賴時我們只能去classpath目錄下找到它並手動刪除掉。

使用gradle引入一個第三方依賴(例如spring core)

gradle兼容maven倉庫,所以可以直接使用maven倉庫來導入第三方依賴。maven倉庫是按照一定協議來存放各種第三方依賴庫的空間,可以通過groupID和artifactid定位來找到自己需要的第三方依賴庫。

  1. 在build.gradle中指定用來下載依賴庫的倉庫,可以使用網址或者本地地址來指定,也可以使用“mavenCentral()”這些gradle定義的地址來使用默認的倉庫。
  2. 在dependencies中使用寫入依賴庫所在組(group),名稱(name),版本號(version)

倉庫只需要定義一次,通過上面的配置gradle就會從定義好的倉庫中找到相應的依賴包下載下來並編譯好,然后就可以直接在代碼中使用了。在mvnrepository這個遠程maven倉庫中,它提供了引入相應依賴包的配置,只需復制下來黏貼到buil.gradle文件中即可。

 
7.png

通過build工具管理依賴庫的優點

  1. 方便,不需要進行各種文件操作。
  2. 直觀,項目中使用了哪些第三方依賴一目了然
  3. 統一,同一項目中的成員只要保證使用同一build腳本就可以做到環境和依賴包的統一

四,關於Javaweb中gradle的目錄配置和IDEA對gradle的適配

java web有自己的程序包規范(封包格式為.war),類似於安卓中的apk文件。將其移動到web服務器(如tomcat)的相應目錄中,web服務器就會將其解壓、部署,將網站跑起來。當然也可以直接將其解壓,將得到的目錄移動到服務器程序指定的目錄下(類似於Apache的www目錄)即可。

war包結構

 
8.png

gradle定義的項目結構(准確來說是‘war’這個plugin定義的)

將項目目錄結構定義的有別於程序包目錄結構,是為了方便程序員在編寫程序的時候更加直觀的管理項目文件,因為程序包定義的目錄結構不一定適合人們直觀的對其進行操作。比如war包專門定義了一個Resource目錄,方便用戶集中管理資源文件和各種配置文件

 
9.png

IDEA的項目構建配置(ctrl+alt+shift+s)

IDEA對各種構建工具的適配就主要體現在這個界面,在這個界面可以提供可視化的構建操作

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM