gradle通關(guān)系列(一)-gradle基本概念

什么是自動化構(gòu)建工具

日常開發(fā)中,我們可以通過IDE可以輕松的將我的工程打包成我們想要的輸入

  • java可以輸出成可執(zhí)行的jar、依賴庫jar蕾久、war等

  • android可以輸出成apk舍杜、aar、aab等

  • c/c++可以輸出成可執(zhí)行文件桅滋、靜態(tài)庫慧耍、動態(tài)庫等

  • flutter可以打包成ios包、apk丐谋、web應(yīng)用芍碧、桌面應(yīng)用等

對于這些輸出我們可以配置一下我們一些構(gòu)建的選項(xiàng)就可以輸出成我們想要的產(chǎn)物,那這些產(chǎn)物是怎么輸出的呢号俐?

  1. 我們要學(xué)會使用工具集

    學(xué)習(xí)java時(shí)泌豆,我們首先會接觸到一個(gè)javac命令,這個(gè)命令

    學(xué)習(xí)c/c++是我們會接觸到gcc/g++命令

    ...

  2. 了解對應(yīng)輸出產(chǎn)物的構(gòu)建流程

    apk的構(gòu)建流程

    jar包的構(gòu)建流程

    ...

  3. 按照構(gòu)建步驟來完成我們的構(gòu)建輸出

比如我們現(xiàn)在要將一個(gè)java工程打包成一個(gè)可執(zhí)行的jar包吏饿,大致有以下幾個(gè)步驟

  • 準(zhǔn)備好我成程序的依賴庫

  • 使用javac命令來編譯我們的java文件

  • 然后根據(jù)可執(zhí)行jar的結(jié)構(gòu)生成對應(yīng)的內(nèi)容,可執(zhí)行jar需要在manifest中指定主類

  • 最后使用jar命令完成打包

然后我們通過上述步驟手動完成了我們可執(zhí)行jar包的輸出

在開發(fā)時(shí)我們頻繁的改動代碼踪危,每次改動之后都要重復(fù)上述的某些步驟才能重新完成輸出產(chǎn)物,所以我們可以將上述步驟寫成程序猪落,讓程序替我們晚上手工操作

這樣我們工程的可執(zhí)行jar的構(gòu)建就變成自動化的了贞远。

突然我們需要添加一個(gè)新的依賴,添加一些新的代碼時(shí)笨忌,我們寫好的適用于上一個(gè)項(xiàng)目的程序就需要更改了兴革,然后進(jìn)行測試,才能為我們新的工程進(jìn)行輸出可執(zhí)行jar

于是在對程序改動的過程將提高程序的靈活性,我們對構(gòu)建的功能杂曲、參數(shù)進(jìn)行可配置

這樣便形成了自動化構(gòu)建工具

自動化構(gòu)建工具Gradle

Gradle是一個(gè)開放源代碼的自動化構(gòu)建工具庶艾,旨在靈活地構(gòu)建幾乎任何類型的軟件 。Gradle幾乎可以靈活的構(gòu)建任何類型的軟件擎勘,java咱揍、c、c++棚饵、swift煤裙、android、flutter等噪漾,所以我們學(xué)好了Gradle的話硼砰,可以用他去完成其他的軟件的構(gòu)建,可以非必須的學(xué)習(xí)其他對應(yīng)軟件的構(gòu)建工具了欣硼。

Gradle的基本概念

再學(xué)習(xí)gradle之前我們需要介紹幾個(gè)Gradle的基本概念题翰。

  • Project

    每一個(gè)Gradle構(gòu)建都是由一個(gè)或多個(gè)Project組成,Project代表的取決于你想用Gradle讓他做什么诈胜,例如它可以是一個(gè)Jar的依賴庫或者一個(gè)Web應(yīng)用

  • Task

    Gradle作用于Project的工作由一個(gè)或多個(gè)Task定義豹障,Task可以是一個(gè)簡單的復(fù)制工作,也可以是一個(gè)編譯工作焦匈,也可以個(gè)是一個(gè)壓縮工作

  • Plugin

    Task一般會由Plugin來提供血公,Plugin是對一個(gè)Project、Gradle缓熟、Settings等對象進(jìn)行應(yīng)用一些操作累魔,比如Plugin中直接為Project定義一些通用的Task

Gradle的三個(gè)階段

  1. 初始化

    Gradle支持單項(xiàng)目和多項(xiàng)目構(gòu)建。在初始化階段够滑,Gradle確定將要參與構(gòu)建的項(xiàng)目垦写,并為每個(gè)項(xiàng)目創(chuàng)建一個(gè)Project實(shí)例。

  2. 配置

    這個(gè)階段會配置Project對象版述,所有項(xiàng)目的構(gòu)建部分的腳本將會被執(zhí)行

  3. 執(zhí)行

    Gradle在配置階段確定了任務(wù)子集、創(chuàng)建和配置的寞冯。子集由傳遞給gradle命令的任務(wù)名稱參數(shù)和當(dāng)前目錄確定渴析。然后Gradle執(zhí)行每個(gè)選定的任務(wù)

Project結(jié)構(gòu)圖

image.png
  • Properties

    項(xiàng)目的屬性;可以通過命令行-P指定吮龄;也可以在gradle.properties文件中通過系統(tǒng)屬性指定俭茧,如org.gradle.project.foo=bar;還可以通過環(huán)境變量來指定漓帚,如ORG_GRADLE_PROJECT_foo=bar

  • Repositories

    存儲庫托管一組模塊母债,每個(gè)模塊都可以提供一個(gè)或多個(gè)由模塊版本指示的發(fā)行版(組件)。該存儲庫可以基于二進(jìn)制存儲庫產(chǎn)品(例如Artifactory或Nexus)或文件系統(tǒng)中的目錄結(jié)構(gòu)。

  • Configurations

    配置是為特定目標(biāo)分組在一起的一組命名的依賴項(xiàng)毡们。配置提供對基礎(chǔ)的迅皇,已解析的模塊及其工件的訪問權(quán)限

  • Components

    一個(gè)模塊任何單一的版本,對于外部庫衙熔,組件的術(shù)語是指該庫的一個(gè)發(fā)行版本登颓,在構(gòu)建中,組件由插件(例如Java庫插件)定義红氯,并提供一種定義發(fā)布出版物的簡單方法框咙。它們包括工件以及適當(dāng)?shù)脑獢?shù)據(jù),這些元數(shù)據(jù)詳細(xì)描述了組件的變體

  • Tasks

    Project中定義的一系列任務(wù)痢甘,用來完成某一項(xiàng)特定的操作

  • Extensions

    拓展喇嘱,用來拓展Project的配置項(xiàng),Extension一般都是由一個(gè)簡單的JavaBean來提供的塞栅,用于在配置階段保存用戶對于當(dāng)前項(xiàng)目構(gòu)建的相關(guān)配置者铜,然后在執(zhí)行階段按照用戶配置來完成自定的任務(wù)集;Convention用來指定一組約定构蹬,它也是一種配置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末王暗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子庄敛,更是在濱河造成了極大的恐慌俗壹,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,332評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件藻烤,死亡現(xiàn)場離奇詭異绷雏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)怖亭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評論 3 385
  • 文/潘曉璐 我一進(jìn)店門涎显,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人兴猩,你說我怎么就攤上這事期吓。” “怎么了倾芝?”我有些...
    開封第一講書人閱讀 157,812評論 0 348
  • 文/不壞的土叔 我叫張陵讨勤,是天一觀的道長。 經(jīng)常有香客問我晨另,道長潭千,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,607評論 1 284
  • 正文 為了忘掉前任借尿,我火速辦了婚禮刨晴,結(jié)果婚禮上屉来,老公的妹妹穿的比我還像新娘。我一直安慰自己狈癞,他們只是感情好茄靠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,728評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亿驾,像睡著了一般嘹黔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上莫瞬,一...
    開封第一講書人閱讀 49,919評論 1 290
  • 那天儡蔓,我揣著相機(jī)與錄音,去河邊找鬼疼邀。 笑死喂江,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旁振。 我是一名探鬼主播获询,決...
    沈念sama閱讀 39,071評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拐袜!你這毒婦竟也來了吉嚣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,802評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蹬铺,失蹤者是張志新(化名)和其女友劉穎尝哆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甜攀,經(jīng)...
    沈念sama閱讀 44,256評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秋泄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,576評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了规阀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恒序。...
    茶點(diǎn)故事閱讀 38,712評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谁撼,靈堂內(nèi)的尸體忽然破棺而出歧胁,到底是詐尸還是另有隱情,我是刑警寧澤厉碟,帶...
    沈念sama閱讀 34,389評論 4 332
  • 正文 年R本政府宣布喊巍,位于F島的核電站,受9級特大地震影響墨榄,放射性物質(zhì)發(fā)生泄漏玄糟。R本人自食惡果不足惜勿她,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,032評論 3 316
  • 文/蒙蒙 一袄秩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦之剧、人聲如沸郭卫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贰军。三九已至,卻和暖如春蟹肘,著一層夾襖步出監(jiān)牢的瞬間词疼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,026評論 1 266
  • 我被黑心中介騙來泰國打工帘腹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贰盗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,473評論 2 360
  • 正文 我出身青樓阳欲,卻偏偏與公主長得像舵盈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子球化,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,606評論 2 350

推薦閱讀更多精彩內(nèi)容