上一篇:依赖的坐标与范围
依赖的分类
类型 | 描述 |
---|---|
外部依赖 | 依赖存放于外部仓库中,如jcenter ,mavenCentral 等仓库提供的依赖 |
项目依赖 | 依赖于其它项目(模块)的依赖 |
文件依赖 | 依赖存放在本地文件系统中,基于本地文件系统获取依赖 |
内置依赖 | 跟随Gradle发行包或者基于Gradle API的一些依赖,通常在插件开发时使用 |
子模块依赖 | 还没搞清楚是什么鬼 |
外部依赖
可以通过如下方式声明外部依赖,Gradle支持通过map方式或者g:a:v
的简写方式传入依赖描述,这些声明依赖会去配置的repository
查找。
dependencies {
// 采用map方式传入单个
compile group: 'commons-lang', name: 'commons-lang', version: '2.6'
// 采用map方式传入多个
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'
// 采用简写方式传入多个
compile 'org.springframework:spring-core:2.5',
'org.springframework:spring-aop:2.5'
}
项目依赖
此类依赖多见于多模块项目,书写方式如下,其中:
是基于跟项目的相对路径描述符。
compile project(':project-foo')
文件依赖
依赖存在于本地文件系统中,举个栗子,如oracle的OJDBC驱动,中央仓库中没有又没有自建私服此时需要放到项目lib下进行手工加载那么便可采用此种方式,可以通过FileCollection
接口及其子接口提供的方法加载这些依赖(支持文件通配符)
dependencies {
// 指定多个依赖
compile files('hibernate.jar', 'libs/spring.jar')
// 读取lib文件夹下的全部文件作为项目依赖
compile fileTree('libs')
// 根据指定基准目录\包含\排除条件加载依赖
compile fileTree(dir:'libs',include:'spring*.jar',exclude:'hibernate*.jar')
}
内置依赖
跟随Gradle发行包或者基于Gradle API的一些依赖,通常在插件开发时使用,当前提供了如下三种
dependencies {
// 加载Gradle自带的groovy作为依赖
compile localGroovy()
// 使用Gradle API作为依赖
compile gradleApi()
/使用 Gradle test-kit API 作为依赖
testCompile gradleTestKit()
}
子模块依赖
简单来说就是声明依赖的依赖
或者依赖的传递依赖
,一般情况下如果依赖的库并未用构建工具构建(尤其是一些上古时代的老库),那么Gradle是无法透过源文件去查找该库的传递性依赖的,通常而言,一个模块采用XML(POM文 件)来描述库的元数据和它的传递性依赖。Gradle可以借由此方式提供相同的能力,当然这种方式也会可以改写原有的传递性依赖。这里让druid
连接池依赖了ptj.tiger
的一个库。
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"
}
}
}
下一篇:依赖版本的管理