摇篮配置
在這篇文章中,我們將介紹有關(guān)Gradle配置的綜合文章。
1.技術(shù)
Gradle是用于自動(dòng)任務(wù)管理的開源構(gòu)建工具。 它基于Apache Ant,Apache Maven的概念。 Gradle是使用Groovy語(yǔ)言開發(fā)的。 Gradle是使用基于Groovy的領(lǐng)域特定語(yǔ)言(DSL)開發(fā)的。 Gradle構(gòu)建以Apache Maven的形式包含Groovy語(yǔ)言的任務(wù),而Apache Ant構(gòu)建文件為XML格式。
Gradle使用有向無環(huán)圖(DAG)確定執(zhí)行任務(wù)的順序。 Gradle是為多項(xiàng)目構(gòu)建而設(shè)計(jì)的,這意味著一個(gè)項(xiàng)目將有許多子項(xiàng)目,并且可以增長(zhǎng)到很多子項(xiàng)目。 Gradle的獨(dú)特功能是通過智能確定構(gòu)建樹的哪些部分被修改,哪些未被修改,來支持增量構(gòu)建。 如果樹中的某些部分未修改,則將通過顯示最新狀態(tài)來跳過它,而其他部分將被重新執(zhí)行,這將減少項(xiàng)目的構(gòu)建時(shí)間。
2. Java項(xiàng)目結(jié)構(gòu)
與Maven目錄結(jié)構(gòu)類似,Gradle的項(xiàng)目結(jié)構(gòu)還將包含src / main / java和src / main / resources用于Java類和類路徑資源,src / test / java和src / test / resources將包含測(cè)試類和相應(yīng)地測(cè)試資源。
3.搖籃配置
Gradle是指定依賴項(xiàng)的基本概念。 使用配置,我們可以指定依賴關(guān)系,這些依賴關(guān)系可以在本地緩存或Maven Central存儲(chǔ)庫(kù)或在Gradle構(gòu)建文件中配置的任何存儲(chǔ)庫(kù)中。
通過將Maven構(gòu)建文件(pom.xml)和ant構(gòu)建文件(build.xml)導(dǎo)入Gradle構(gòu)建文件(build.gradle),還支持Gradle。
默認(rèn)情況下,Gradle支持以下配置:
實(shí)作
實(shí)施配置應(yīng)視為默認(rèn)配置。 我們使用它來聲明我們不想暴露給使用者的編譯時(shí)的依賴項(xiàng)。 引入此配置是為了替換已棄用的編譯配置,以避免污染使用者的編譯時(shí),而實(shí)際上我們不想暴露這些依賴。
a)Gradle將依賴項(xiàng)添加到編譯類路徑中,并將依賴項(xiàng)打包到生成輸出中。 但是,當(dāng)您的模塊配置實(shí)現(xiàn)依賴項(xiàng)時(shí),它會(huì)讓Gradle知道您不希望該模塊在編譯時(shí)泄漏對(duì)其他模塊的依賴項(xiàng)。 即,該依賴關(guān)系僅在運(yùn)行時(shí)可用于其他模塊。
b)使用此依賴項(xiàng)配置而不是API或編譯(不建議使用)可以顯著縮短構(gòu)建時(shí)間,因?yàn)樗鼫p少了構(gòu)建系統(tǒng)需要重新編譯的模塊數(shù)量。 例如,如果實(shí)現(xiàn)依賴項(xiàng)更改其API,則Gradle僅重新編譯該依賴關(guān)系和直接依賴于該依賴關(guān)系的模塊。 大多數(shù)應(yīng)用程序和測(cè)試模塊應(yīng)使用此配置。
API
我們使用API??配置確實(shí)聲明了屬于我們API的依賴項(xiàng),即,對(duì)于我們明確希望公開給我們的使用者的依賴項(xiàng)。 這是唯一將依賴項(xiàng)暴露給使用者的編譯時(shí)的標(biāo)準(zhǔn)配置。
a)Gradle將依賴項(xiàng)添加到編譯類路徑并生成輸出。 當(dāng)模塊包含API依賴項(xiàng)時(shí),它會(huì)讓Gradle知道該模塊希望將該依賴項(xiàng)可傳遞地導(dǎo)出到其他模塊,以便它們?cè)谶\(yùn)行時(shí)和編譯時(shí)都可用。
b)此配置的行為就像編譯一樣,但是您應(yīng)謹(jǐn)慎使用它,并且僅應(yīng)將需要的依賴項(xiàng)可傳遞地導(dǎo)出到其他上游使用者。 這是因?yàn)?#xff0c;如果API依賴關(guān)系更改了其外部API,則Gradle會(huì)在編譯時(shí)重新編譯所有可以訪問該依賴關(guān)系的模塊。 因此,擁有大量的API依賴關(guān)系會(huì)顯著增加構(gòu)建時(shí)間。 除非您希望將依賴項(xiàng)的API公開給單獨(dú)的模塊,否則庫(kù)模塊應(yīng)該使用實(shí)現(xiàn)依賴項(xiàng)。
僅編譯
使用compileOnly配置,可以聲明僅在編譯時(shí)才可用的依賴項(xiàng),而在運(yùn)行時(shí)不可用。 例如Project,Lombok是庫(kù),它在編譯時(shí)修改字節(jié)碼,并通過使用注釋將更多方法添加到類中。 一旦生成了更新的字節(jié)碼,就不需要在類路徑中顯示字節(jié)碼,因?yàn)檫@些類型的庫(kù)將使用此配置。
僅運(yùn)行時(shí)
Gradle僅將依賴項(xiàng)添加到構(gòu)建輸出中,以在運(yùn)行時(shí)使用。 也就是說,它不會(huì)添加到編譯類路徑中。 例如,數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,我們?cè)谂渲弥兄付?qū)動(dòng)程序的類名,但并不需要在編譯時(shí)顯示,它僅在運(yùn)行時(shí)有用。
注釋處理器
要在作為注釋處理器的庫(kù)上添加依賴項(xiàng),必須使用注釋處理器配置將其添加到注釋處理器類路徑中。 這是因?yàn)槭褂么伺渲每??以通過將編譯類路徑與注釋處理器類路徑分開來提高構(gòu)建性能。 如果Gradle在編譯類路徑上找到注釋處理器,則會(huì)停用編譯回避,這會(huì)對(duì)構(gòu)建時(shí)間產(chǎn)生負(fù)面影響(5.0或更高版本,在編譯類路徑上找到忽略注釋處理器)。
測(cè)試實(shí)施
與實(shí)現(xiàn)配置類似,測(cè)試實(shí)現(xiàn)配置用于指定在測(cè)試的編譯和運(yùn)行期間可用的依賴項(xiàng)。 例如,僅在編譯或執(zhí)行測(cè)試時(shí)才需要Junit和Mocking庫(kù)。
testCompileOnly
與編譯類似,僅依賴項(xiàng)僅在測(cè)試類編譯時(shí)可用,而在測(cè)試運(yùn)行時(shí)不可用。
testRuntimeOnly
類似于runtimeOnly,這些依賴項(xiàng)在執(zhí)行測(cè)試時(shí)可用,但在測(cè)試編譯時(shí)不可用。
以上都是默認(rèn)情況下Gradle提供的配置,我們可以使用自定義配置,在自定義任務(wù)中指定這些自定義配置。 Gradle還支持配置中的繼承。 我們可以使用來自配置屬性的擴(kuò)展來指定基本配置。
configurations {testCompileOnly.extendsFrom compileOnly }所有完整的配置依賴項(xiàng)都將被復(fù)制到testCompileOnly Configuration,這將刪除Gradle構(gòu)建文件中的重復(fù)規(guī)范。
4. Gradle配置–結(jié)論
在當(dāng)前博客中,我們了解了Gradle構(gòu)建工具,并增加了Gradle相對(duì)于Maven,Ant構(gòu)建工具的優(yōu)勢(shì)。 我們?cè)敿?xì)研究了Gradle配置,在其中如何指定每個(gè)配置級(jí)別的依賴項(xiàng)。
在本文中,我將描述您需要工程師利用Gradle注意Java Web應(yīng)用程序的所有內(nèi)容 。 我已經(jīng)完成了無數(shù)可以想到的Gradle巨大的Java冒險(xiǎn)。 它提供快速的監(jiān)督和運(yùn)輸。 利用Gradle輕松安排您的事業(yè)。
翻譯自: https://www.javacodegeeks.com/gradle-configuration.html
總結(jié)
- 上一篇: 项目织机
- 下一篇: mht安卓打开软件(mht安卓)