(8)依赖管理

依赖分组

Gradle将对依赖进行分组,比如编译Java时使用的是这组依赖,运行Java时又可以使用另一组依赖。每一组依赖称为一个Configuration,在声明依赖时,我们实际上是在设置不同的Configuration。要定义一个Configuration,我们可以通过以下方式完成:

configurations {
   myDependency
}

以上只是定义了一个名为myDependency的Configuration,我们并未向其中加入依赖。我们可以通过dependencies()方法向myDependency中加入实际的依赖项:

dependencies {
   myDependency 'org.apache.commons:commons-lang3:3.0'
}

以上,我们将Apache的commons加入了myDependency中。之后,如果有Task需要将Apache commons加入到classpath中,我们可以通过以下方式进行获取:

task showMyDependency << {
   println configurations.myDependency.asPath
}

依赖配置阶段

我们来看一个Java项目,该项目依赖于SLF4J,而在测试时依赖于Junit。在声明依赖时,我们可以通过以下方式进行设置:

dependencies {
   compile 'org.slf4j:slf4j-log4j12:1.7.2'
   testCompile 'junit:junit:4.8.2'
}

我们并没有定义名为compile和testCompile的Configuration,这是这么回事呢?原因在于,java Plugin会自动定义compile和testCompile,分别用于编译Java源文件和编译Java测试源文件。另外,java Plugin还定义了runtime和testRuntime这两个Configuration,分别用于在程序运行和测试运行时加入所配置的依赖。也就是:

  • 源代码的两个阶段:compile(编译)、runtime(运行时)
  • 测试代码的两个阶段:testCompile、testRuntime

它们的依赖关系如下:

  • 在编译阶段依赖的那么在运行时也会依赖。
  • 如果运行时依赖的编译时不一定会依赖。
  • 如果源代码依赖的那么测试代码也会依赖。
  • 测试代码依赖的源代码不一定会依赖。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • 学习本系列前可以下载相关的github项目gradleLearnDemo。地址:https://github.co...
    sososeen09阅读 5,268评论 0 1
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,958评论 6 342
  • 多年前 相遇在 小雨里 是不是欲飞过沧海 经年后 又相逢 是为何 而必的曾经 哦 这是不是 就是 蝴蝶效应 201...
    微风LG阅读 215评论 0 2
  • 偶然看到的一幕,老爷子一直牵着老伴。三十年后的我们会是这样吗? ——王兴中 人生七十古...
    魏加恩阅读 261评论 0 1