鍍金池/ 教程/ 物聯(lián)網(wǎng)/ Gradle強(qiáng)大的特性
依賴(lài)管理實(shí)戰(zhàn)
配置遠(yuǎn)程倉(cāng)庫(kù)
安裝Gradle
簡(jiǎn)介
項(xiàng)目自動(dòng)化簡(jiǎn)介
配置子項(xiàng)目
Gradle強(qiáng)大的特性
自動(dòng)化測(cè)試
簡(jiǎn)介
掌握構(gòu)建生命周期
使用命令行操作
構(gòu)建Java項(xiàng)目
管理任務(wù)
構(gòu)建工具
連續(xù)傳遞的特性
用Gradle開(kāi)發(fā)Web項(xiàng)目
聲明依賴(lài)
構(gòu)建塊
簡(jiǎn)介
測(cè)試Java應(yīng)用
java構(gòu)建工具
為什么選擇Gradle
拆分項(xiàng)目文件
單元測(cè)試
多項(xiàng)目打包
Gradle 起步
介紹這個(gè)Gradle項(xiàng)目
簡(jiǎn)介
自定義腳本
Gradle包裝器
簡(jiǎn)要概述依賴(lài)管理
項(xiàng)目模塊化

Gradle強(qiáng)大的特性

Gradle提供了一些默認(rèn)的Tasks給Java項(xiàng)目,比如,編譯源代碼、運(yùn)行測(cè)試、打包JAR.每一個(gè)Java項(xiàng)目都有一個(gè)標(biāo)準(zhǔn)的路徑布局,這個(gè)布局定義了去哪里找項(xiàng)目的源代碼、資源文件和測(cè)試代碼,你也可以在配置中修改這些默認(rèn)位置。

Gradle的約定類(lèi)似于Maven的約定優(yōu)于配置的實(shí)現(xiàn),Maven的約定就是一個(gè)項(xiàng)目只包含一個(gè)Java源代碼路徑,只產(chǎn)生一個(gè)JAR文件,對(duì)于企業(yè)級(jí)開(kāi)發(fā)來(lái)講這樣是顯然不夠的,Gradle允許你打破傳統(tǒng)的觀念,Gradle的構(gòu)建生命周期如下圖:

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag6.png" alt="" /> http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag5.png" alt="" />

和其他構(gòu)建工具集成

Gradle完全兼容Ant、Maven,你可以很容易的從Ant或Maven遷移到Gradle,Gradle并不強(qiáng)迫你完全把你的Build邏輯遷移過(guò)來(lái),它允許你復(fù)用已有的Ant構(gòu)建邏輯。Gradle完全兼容Maven和Ivy倉(cāng)庫(kù),你可以從中檢索依賴(lài)也可以發(fā)布你的文件到倉(cāng)庫(kù)中,Gradle提供轉(zhuǎn)換器能把Maven的構(gòu)建邏輯轉(zhuǎn)換成Gradle的構(gòu)建腳本。

從Ant,Maven遷移到Gradle

現(xiàn)有的Ant腳本可以無(wú)縫的導(dǎo)入到Gradle項(xiàng)目中,Ant的Target在運(yùn)行時(shí)直接映射成Gradle的任務(wù),Gradle有一個(gè)AntBuilder可以把你的Ant腳本混成Gradle的DSL(領(lǐng)域特定語(yǔ)言),這些腳本看起來(lái)像是Ant的XML,但是去掉了尖括號(hào),對(duì)于Ant用戶(hù)來(lái)說(shuō)非常方便,不需要擔(dān)心過(guò)渡到Gradle的學(xué)習(xí)周期。

Gradle能夠解析現(xiàn)有的Maven POM,從而得到傳遞性依賴(lài)的信息,并且引入到當(dāng)前項(xiàng)目中,在此基礎(chǔ)上,它也支持排除傳遞性依賴(lài)或者干脆關(guān)閉傳遞性依賴(lài),這一點(diǎn)是Maven所不具備的特性。 Gradle項(xiàng)目使用Maven項(xiàng)目生成的資源已經(jīng)不是個(gè)問(wèn)題了,接著需要反過(guò)來(lái)考慮,Maven用戶(hù)是否能夠使用 Gradle生成的資源呢?或者更簡(jiǎn)單點(diǎn)問(wèn),Gradle項(xiàng)目生成的構(gòu)件是否可以發(fā)布到Maven倉(cāng)庫(kù)中供人使用呢?這一點(diǎn)非常重要,因?yàn)槿绻霾坏竭@一點(diǎn),你可能就會(huì)丟失大量的用戶(hù)。幸運(yùn)的是Gradle再次給出了令人滿(mǎn)意的答案。使用Gradle的Maven Plugin,用戶(hù)就可以輕松地將項(xiàng)目構(gòu)件上傳到Maven倉(cāng)庫(kù)中:

    apply plugin: 'maven'
    ...
    uploadArchives {
        repositories.mavenDeployer {
        repository(url: "http://localhost:8088/nexus/content/repositories/snapshots/") {
            authentication(userName: "admin", password: "admin123")
            pom.groupId = "com.juvenxu"
            pom.artifactId = "account-captcha"
        }
        }
    }

在上傳的過(guò)程中,Gradle能夠基于build.gradle生成對(duì)應(yīng)的Maven POM文件,用戶(hù)可以自行配置POM信息,比如這里的groupId和artifactId,而諸如依賴(lài)配置這樣的內(nèi)容,Gradle是會(huì)自動(dòng)幫你進(jìn)行轉(zhuǎn)換的。由于Maven項(xiàng)目之間依賴(lài)交互的直接途徑就是倉(cāng)庫(kù),而Gradle既能夠使用Maven倉(cāng)庫(kù),也能以Maven的格式將自己的內(nèi)容發(fā)布到倉(cāng)庫(kù)中,因此從技術(shù)角度來(lái)說(shuō),即使在一個(gè)基于Maven的大環(huán)境中,局部使用Gradle也幾乎不會(huì)是一個(gè)問(wèn)題。

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag7.png" alt="" />

上一篇:簡(jiǎn)介下一篇:項(xiàng)目模塊化