gradle 系列 (1) - 基礎(chǔ)知識(shí)

在學(xué)習(xí) gradle 之前我們先要知道 gradle 是個(gè)什么東西,知道的覺得沒什么,不知道的可是真沒什么感念,gradle 就是自動(dòng)化構(gòu)建,編譯工具。先不忙 gradle,我們先來看看這個(gè)自動(dòng)化構(gòu)建,編譯工具。

項(xiàng)目自動(dòng)化構(gòu)建工具的發(fā)展

最早在開發(fā)的過程中是沒有項(xiàng)目自動(dòng)化構(gòu)建這個(gè)東西的,每次編譯項(xiàng)目的時(shí)候都是在命令行下對(duì)每個(gè)源文件執(zhí)行編譯命令,這種方式對(duì)于源文件不多的小項(xiàng)目還行,但是當(dāng)項(xiàng)目比較大有成百上千個(gè)源文件需要編譯時(shí)就比較痛苦了,所以才有了一些自動(dòng)化構(gòu)建工具的誕生,其本質(zhì)是將一些繁瑣的無須人工干預(yù)的編譯流程交由機(jī)器來完成。

Makefile

最早出現(xiàn)的構(gòu)建工具是makefile,它主要用于C/C++項(xiàng)目,大家會(huì)發(fā)現(xiàn)Android的源碼里面用的就是這一套構(gòu)建機(jī)制。makefile文件將程序編譯,鏈接,裝載(編譯原理上的東西,不熟悉的可以去翻閱相關(guān)書籍)的流程定義成一套統(tǒng)一的規(guī)則。其中就包括了:哪些源文件需要編譯,如何去編譯,依賴的庫文件,以及如何生成最終的可執(zhí)行文件等等。通過這些規(guī)則去實(shí)現(xiàn)我們的構(gòu)建需求,那么當(dāng)你在編譯整個(gè)工程的時(shí)候就只需要在命令行下執(zhí)行一個(gè)make命令就可以搞定了,極大的提高了項(xiàng)目的構(gòu)建效率。

Ant

ant也是一套構(gòu)建工具,主要應(yīng)用于Java項(xiàng)目(在eclipse上開發(fā)Android項(xiàng)目的時(shí)候用的比較多)。它是一個(gè)將軟件編譯,測試,部署過程組織起來自動(dòng)化執(zhí)行的工具。ant構(gòu)建文件基于xml,每個(gè)文件對(duì)應(yīng)一個(gè)唯一的project,每個(gè)project下面可以有很多的target,這些target之間存在著一定的依賴關(guān)系,當(dāng)執(zhí)行某個(gè)target時(shí)需要先執(zhí)行該target的依賴。每個(gè)target里面又包含了一些task,task就是最終需要執(zhí)行的命令。

Maven

ant雖然能大幅提高構(gòu)建的效率,但是也存在一些缺點(diǎn),比方說ant中的組件依賴(jar包)不能跨網(wǎng)絡(luò)使用,為了解決這個(gè)問題,于是maven出現(xiàn)了,maven使用了強(qiáng)大的中央倉庫,使得項(xiàng)目中使用到的一些公共組件可以很方便的聯(lián)網(wǎng)依賴和更新,這也極大的方便了一些開源項(xiàng)目的使用。

Gradle

由于maven的配置過于復(fù)雜和繁瑣,于是出現(xiàn)了我們今天的主角gradle,下面給大家看下兩者配置文件的對(duì)比。

maven的配置:

<dependencies>
    <dependency>
        <groupId>com.crashlytics.sdk.android</groupId>
        <artifactId>crashlytics</artifactId>
        <version>2.5.5</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>

gradle的配置:

dependencies {
    compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar')
    testCompile('junit:junit:4.7')
}

看完項(xiàng)目自動(dòng)化構(gòu)建工具的發(fā)展歷史,想必各位心里有點(diǎn)譜了,至于對(duì)這個(gè) gradle 干的活有點(diǎn)理解了。



參考資料:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,954評(píng)論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評(píng)論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,288評(píng)論 25 708
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng),請點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,176評(píng)論 8 72
  • 原來距離去年在這上面寫字已經(jīng)過了一年多,去年說要另外起一篇記錄生活,我食言了。 可能是又得準(zhǔn)備一個(gè)新的開始無從下手...
    簡員閱讀 213評(píng)論 0 0