Gradle 依赖管理--声明依赖

官方文档:https://docs.gradle.org/current/userguide/declaring_dependencies.html

声明依赖: 在研究依赖声明之前,需要定义依赖配置(dependency configuration)的概念。

什么是依赖配置:

  每个为gradle 项目声明依赖的依赖关系都使用于一个特定的范围,例如一些依赖项应该用于编译源代码,而其他依赖项只需要在运行时可用即可,Gradle 在配置 (configuration)的帮助下表示依赖的范围,每个配置都可以通过一个唯一的名称来标识。

  许多gradle 插件将预定义的配置添加到项目中,例如,java 插件添加配置来表示源代码编译,执行测试等所需的各种类路径,有关实例,请参考java 插件的介绍:

  有关使用配置来浏览,检查和处理后的元数据和分配依赖项的工件的更多实例,请参阅resolutionresult APIs.

  配置的继承和组合:

  一个配置可以扩展其他的配置以形成继承的层次结构,子配置继承所有在其超配置(superconfigurations)上声明依赖项,配置继承在Gradle 的核心插件中被大量使用,比如Java 插件,例如testImplementation 配置扩展了implementation配置,这样的配置的层次结构有一个实际的目的,编译测试不仅编写测试类的依赖项,还需要在其之上的被测试源代码的依赖项,使用Junit编写和执行测试代码的Java项目也需要Guava,如果它的类也被导入到生产源代码(production source code)中。

testImplementation 和implementation configuration 形成的这个继承层次结构是通过调用Configuration.extendsFrom(org.gradle.api.artifacts.Configuration[])接口来实现的,一个配置可以扩展任何其他的配置,而不考虑其在构建脚本或插件中的定义。

 

假如你想编写一套冒烟测试(smoke tests),每个冒烟测试都进行了Http 调用来验证web服务断点。作为底层测试框架,项目已经使用了junit,你可以定义一个名为smokeTest的新配置,它扩展了testImplementation配置,以重用现有的测试框架依赖:

Example 1. Extending a configuration from another configuration

configurations {
    smokeTest.extendsFrom testImplementation
}

dependencies {
    testImplementation 'junit:junit:4.13'
    smokeTest 'org.apache.httpcomponents:httpclient:4.5.5'
}

可解析和可消费型配置:

  配置(Configurations)是Gradle中依赖解析的一个基础部分。在依赖解析上下文中,区分使用者(producer)和生产者(consumer)是有用的,沿着这条线,配置至少有三种不同的角色:

     1.要声明依赖关系

     2.作为消费者,将一组依赖解析成文件

     3.作为生产者,公开工件及其依赖,供其他项目(这种可消费型配置通常表示生产者向其消费者提供的变体)使用

例如,要表达一个应用程序依赖于库lib,至少需要一个配置:

   

configurations {
    // declare a "configuration" named "someConfiguration"
    someConfiguration
}
dependencies {
    // add a project dependency to the "someConfiguration" configuration
    someConfiguration project(":lib")
}

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱宣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值