上一篇:依賴的坐標(biāo)與范圍
依賴的分類
類型 | 描述 |
---|---|
外部依賴 | 依賴存放于外部倉庫中,如jcenter ,mavenCentral 等倉庫提供的依賴 |
項(xiàng)目依賴 | 依賴于其它項(xiàng)目(模塊)的依賴 |
文件依賴 | 依賴存放在本地文件系統(tǒng)中,基于本地文件系統(tǒng)獲取依賴 |
內(nèi)置依賴 | 跟隨Gradle發(fā)行包或者基于Gradle API的一些依賴,通常在插件開發(fā)時(shí)使用 |
子模塊依賴 | 還沒搞清楚是什么鬼 |
外部依賴
可以通過如下方式聲明外部依賴太防,Gradle支持通過map方式或者g:a:v
的簡寫方式傳入依賴描述,這些聲明依賴會(huì)去配置的repository
查找。
dependencies {
// 采用map方式傳入單個(gè)
compile group: 'commons-lang', name: 'commons-lang', version: '2.6'
// 采用map方式傳入多個(gè)
compile(
[group: 'org.springframework', name: 'spring-core', version: '2.5'],
[group: 'org.springframework', name: 'spring-aop', version: '2.5']
)
// 采用簡寫方式聲明
compile 'org.projectlombok:lombok:1.16.10'
// 采用簡寫方式傳入多個(gè)
compile 'org.springframework:spring-core:2.5',
'org.springframework:spring-aop:2.5'
}
項(xiàng)目依賴
此類依賴多見于多模塊項(xiàng)目,書寫方式如下,其中:
是基于跟項(xiàng)目的相對(duì)路徑描述符捻爷。
compile project(':project-foo')
文件依賴
依賴存在于本地文件系統(tǒng)中,舉個(gè)栗子份企,如oracle的OJDBC驅(qū)動(dòng)也榄,中央倉庫中沒有又沒有自建私服此時(shí)需要放到項(xiàng)目lib下進(jìn)行手工加載那么便可采用此種方式,可以通過FileCollection
接口及其子接口提供的方法加載這些依賴(支持文件通配符)
dependencies {
// 指定多個(gè)依賴
compile files('hibernate.jar', 'libs/spring.jar')
// 讀取lib文件夾下的全部文件作為項(xiàng)目依賴
compile fileTree('libs')
// 根據(jù)指定基準(zhǔn)目錄\包含\排除條件加載依賴
compile fileTree(dir:'libs',include:'spring*.jar',exclude:'hibernate*.jar')
}
內(nèi)置依賴
跟隨Gradle發(fā)行包或者基于Gradle API的一些依賴司志,通常在插件開發(fā)時(shí)使用甜紫,當(dāng)前提供了如下三種
dependencies {
// 加載Gradle自帶的groovy作為依賴
compile localGroovy()
// 使用Gradle API作為依賴
compile gradleApi()
/使用 Gradle test-kit API 作為依賴
testCompile gradleTestKit()
}
子模塊依賴
簡單來說就是聲明依賴的依賴
或者依賴的傳遞依賴
,一般情況下如果依賴的庫并未用構(gòu)建工具構(gòu)建(尤其是一些上古時(shí)代的老庫)骂远,那么Gradle是無法透過源文件去查找該庫的傳遞性依賴的囚霸,通常而言,一個(gè)模塊采用XML(POM文 件)來描述庫的元數(shù)據(jù)和它的傳遞性依賴激才。Gradle可以借由此方式提供相同的能力拓型,當(dāng)然這種方式也會(huì)可以改寫原有的傳遞性依賴。這里讓druid
連接池依賴了ptj.tiger
的一個(gè)庫瘸恼。
dependencies {
// 讓ptj.tiger作為druid的傳遞性依賴
compile module("com.alibaba:druid:1.0.26") {
dependency("cn.pkaq:ptj.tiger:+")
}
runtime module("org.codehaus.groovy:groovy:2.4.7") {
// 停用groovy依賴的commons-cli庫的依賴傳遞
dependency("commons-cli:commons-cli:1.0") {
transitive = false
}
// 讓groovy依賴的ant模塊的依賴ant-launcher停用傳遞性依賴并依賴ant-junit..........
module(group: 'org.apache.ant', name: 'ant', version: '1.9.6') {
dependencies "org.apache.ant:ant-launcher:1.9.6@jar",
"org.apache.ant:ant-junit:1.9.6"
}
}
}
下一篇:依賴版本的管理