Gradle學(xué)習(xí)使用

Gradle是什么?

基于特定領(lǐng)域語言Groovy來進行項目管理的自動化構(gòu)建工具

對比于Maven的區(qū)別?

Maven基于傳統(tǒng)xml依賴管理侥袜,工作中的直觀缺點是在項目規(guī)模越來越大的時候宣蠕,pom依賴眼花繚亂,管理起來很費勁博投,而且之前的文章《maven構(gòu)建依賴管理和依賴范圍》中寫到在工作中遇到j(luò)ar包沖突翅睛,不好排查遏匆。Gradle因其的簡潔靈活狞尔,功能強大,可以通過查看依賴報告直觀的解決依賴沖突,能更好的適用復(fù)雜的構(gòu)建環(huán)境冲呢。

Gradle安裝很簡單,步驟如下:

1厕诡、從官網(wǎng)下載壓縮包:https://gradle.org/

2灵嫌、配置環(huán)境變量

3量瓜、gradle -v务蝠, 驗證環(huán)境變量配置是否成功

驗證gradle安裝成功

3、注意配置新建變量 GRADLE_USER_HOME

變量名:GRADLE_USER_HOME

變量值:自定義Gradle倉庫目錄或者Maven的倉庫目錄(如:D:\apache-maven-3.1.1\repository)

在Gradle安裝目錄下的 init.d 文件夾下馏段,新建一個 init.gradle 文件轩拨,里面填寫以下配置

定義repositories 中 jar 包的獲取順序,優(yōu)先使用本地maven倉庫毅弧,在maven切換到gradle很方便气嫁。非常實用,重點9蛔4缦!

配置gradle使用本地maven倉庫

Groovy語言如何使用元咙,具有哪些特性梯影?

Gradle簡潔靈活的特點主要是,基于Groovy這種動態(tài)語言才能夠?qū)崿F(xiàn)庶香,所以想學(xué)會Gradle甲棍,核心的在于能夠?qū)W會Groovy如何編寫。Groovy編碼同Java一樣都是被編譯成字節(jié)碼文件運行在JVM虛擬機上赶掖,直接通過比較學(xué)習(xí)來了解Groovy幾乎沒有什么難度感猛。

Groovy主要的特點如下:

Groovy完全兼容Java的語法,但是在使用時在Java的基礎(chǔ)上又簡化很多

1奢赂、分號是可選的陪白,可以省略不寫

2、類膳灶、方法默認(rèn)是public咱士,不像Java有好幾個修飾符

3立由、編譯器自動給屬性添加getter/setter方法

4、屬性可以直接用點號獲取

5序厉、最后一個表達式的值會被作為返回值锐膜,return可以不寫

6、==在Java中比較的是內(nèi)存地址弛房,在Groovy中比較的是值道盏,等同于equals()

高效的Groovy特性:

1、assert語句

2文捶、動態(tài)語言捞奕,自動指定變量類型

3、字符串有三種表達方式單引號拄轻,雙引號颅围,三個單引號

4、Groovy中結(jié)合List恨搓、Map有更簡單的寫法

5院促、閉包,理解是把代碼塊作為參數(shù)傳入方法中調(diào)用

代碼展示以上特性:

groovy特性

自動化構(gòu)建工具主要解決的是斧抱,依賴管理常拓,自動化測試,項目部署辉浦,讓這些重復(fù)性的工作弄抬,能使用構(gòu)建工具簡單舒服的依賴管理,這些功能maven宪郊,gradle都已經(jīng)具備掂恕,只是對比maven,gradle實現(xiàn)的更加簡潔靈活弛槐,非常好用懊亡。

gradle兼容maven,所以目錄結(jié)構(gòu)相同:

gradle項目目錄結(jié)構(gòu)

而在進行依賴管理的時候到底與maven有何不同乎串?

1店枣、引入依賴形式不同

maven通過groupId、artifactId叹誉、version唯確定jar包:

maven引依賴

gradle通過group鸯两、name、 version唯一確定jar包 :

gradle引依賴

2长豁、解決版本沖突方式不同:

出現(xiàn)版本沖突的原因是依賴的傳遞性钧唐,可以理解為爸爸依賴爺爺,如果兒子依賴爸爸蕉斜,那么確定兒子依賴爺爺逾柿。

maven:

只能進行手動排除

maven解決jar包沖突

gradle:

默認(rèn)自動使用高版本,所以大部分時候并不需要開發(fā)人員自己去指定一個版本宅此,有效的避免了開發(fā)中自己去哼哧哼哧j解決ar包沖突問題机错,下圖顯示jar包沖突時默認(rèn)使用了高版本。

默認(rèn)引入高版本

除了默認(rèn)外可以直接排除傳遞性依賴

還可以修改默認(rèn)的策略父腕,來強制指定一個版本

有依賴報告可以查看弱匪,方便找問題,這三處截圖省略璧亮。

3萧诫、gradle具備自定任務(wù)功能task

比如通過自定義構(gòu)建web項目的目錄結(jié)構(gòu),創(chuàng)建成功

自定義task

4枝嘶、多項目構(gòu)建

很多時候一個項目都只是按MVC來模塊化帘饶,較少的模塊一般是簡單的項目,在復(fù)雜項目中有非常多的模塊群扶,如果maven進行管理通常都是通過繼承parent模塊來層層繼承及刻,xml的配置依賴jar包過多,梳理項目間的依賴關(guān)系會格外心累竞阐,而gradle真的是多項目構(gòu)建的福音缴饭,在parent項目build.gradle文件中,使用allprojects{}可以對所有模塊需要的配置進行指定骆莹,使用subprojects{}可以對所有子模塊需要依賴的包進行指定颗搂,這樣其他子項目就不需要進行依賴了,要改動版本只需要改一處就可以幕垦,涉及代碼較多丢氢,本文不展開說明。

5先改、自動化測試

在自動化測試上卖丸,maven和gradlle沒有太大差別,只要把測試代碼寫到指定的目錄盏道,那么構(gòu)建工具就可以自動發(fā)現(xiàn)測試用例自動執(zhí)行。gradle更優(yōu)秀的是在build之后到reports目錄下猜嘱,對測試結(jié)果有index.html衅枫,使用頁面形式對測試的結(jié)果進行可視化的展示。

html測試報告

6朗伶、項目部署

maven和gradle都可以將項目打包到本地和指定的遠程倉庫弦撩,目前我工作中使用的就是通過maven將項目打包的公司的svn上,而gradle是通過maven-publish插件操做论皆,操作的也是maven的倉庫益楼,很明顯使用gradle更便捷猾漫。

gradle部署配置
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市感凤,隨后出現(xiàn)的幾起案子悯周,更是在濱河造成了極大的恐慌,老刑警劉巖陪竿,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禽翼,死亡現(xiàn)場離奇詭異,居然都是意外死亡闰挡,警方通過查閱死者的電腦和手機长酗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門花枫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劳翰,“玉大人佳簸,你說我怎么就攤上這事颖变⌒壬玻” “怎么了衔峰?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵垫卤,是天一觀的道長穴肘。 經(jīng)常有香客問我,道長豹缀,這世上最難降的妖魔是什么邢笙? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任鸣剪,我火速辦了婚禮筐骇,結(jié)果婚禮上铛纬,老公的妹妹穿的比我還像新娘告唆。我一直安慰自己晶密,他們只是感情好稻艰,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布僧凤。 她就那樣靜靜地躺著元扔,像睡著了一般澎语。 火紅的嫁衣襯著肌膚如雪擅羞。 梳的紋絲不亂的頭發(fā)上祟滴,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天垄懂,我揣著相機與錄音,去河邊找鬼匙头。 笑死蹂析,一個胖子當(dāng)著我的面吹牛碟婆,可吹牛的內(nèi)容都是我干的竖共。 我是一名探鬼主播公给,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肺然,長吁一口氣:“原來是場噩夢啊……” “哼狰挡!你這毒婦竟也來了释涛?” 一聲冷哼從身側(cè)響起唇撬,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎础嫡,沒想到半個月后榴鼎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巫财,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡赫舒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年鸳粉,在試婚紗的時候發(fā)現(xiàn)自己被綠了届谈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艰山。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡曙搬,死狀恐怖纵装,靈堂內(nèi)的尸體忽然破棺而出橡娄,到底是詐尸還是另有隱情挽唉,我是刑警寧澤瓶籽,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站茬暇,受9級特大地震影響糙俗,放射性物質(zhì)發(fā)生泄漏巧骚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一劈彪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沧奴,春花似錦纲菌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽山橄。三九已至,卻和暖如春丧诺,著一層夾襖步出監(jiān)牢的瞬間驳阎,已是汗流浹背蜘腌。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工金矛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娶耍,地道東北人榕酒。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓杖挣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親筐乳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354