[Gradle中文教程系列]-跟我学Gradle-5.2:依赖的分类

来源:互联网 发布:linux ftp 断点续传 编辑:程序博客网 时间:2024/05/18 02:48

依赖的分类

类型 描述 外部依赖 依赖存放于外部仓库中,如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"        }    } }
0 0
原创粉丝点击