Gradle善良:获得更多的依赖性见解

在我们的大多数项目中,我们都依赖于其他代码,例如库或其他项目。 Gradle有一个不错的DSL来定义依赖关系。 依赖性在依赖性配置中分组。 这些配置可以自己创建,也可以通过插件添加。 一旦定义了依赖项,我们就可以通过dependencies任务很好地了解项目中的所有dependencies项。 我们可以添加可选参数--configuration以仅查看给定配置的依赖性。 但是我们甚至可以检查使用它的特定依赖项,任何传递性依赖项以及如何解析版本。

在以下示例构建中,我们定义了对Spring Boot和SLF4J API的编译依赖性。 SLF4J API还是Spring Boot依赖项的可传递依赖项,因此我们可以看到dependencyInsight任务如何显示版本冲突。

apply plugin: 'java'

// Set Bintray JCenter as repository.
repositories.jcenter()

dependencies {
    // Set dependency for Spring Boot
    compile "org.springframework.boot:spring-boot-starter-web:1.1.5.RELEASE"
    
    // Set dependency for SLF4J with conflicting version.
    compile 'org.slf4j:slf4j-api:1.7.1'
}

现在,让我们在编译配置中为依赖项SLF4J API运行dependencyInsight任务:

$ gradle -q dependencyInsight --configuration compile --dependency slf4j-api
org.slf4j:slf4j-api:1.7.7 (conflict resolution)
+--- org.slf4j:jcl-over-slf4j:1.7.7
|    \--- org.springframework.boot:spring-boot-starter-logging:1.1.5.RELEASE
|         \--- org.springframework.boot:spring-boot-starter:1.1.5.RELEASE
|              \--- org.springframework.boot:spring-boot-starter-web:1.1.5.RELEASE
|                   \--- compile
+--- org.slf4j:jul-to-slf4j:1.7.7
|    \--- org.springframework.boot:spring-boot-starter-logging:1.1.5.RELEASE (*)
\--- org.slf4j:log4j-over-slf4j:1.7.7
     \--- org.springframework.boot:spring-boot-starter-logging:1.1.5.RELEASE (*)

org.slf4j:slf4j-api:1.7.1 -> 1.7.7
\--- compile

org.slf4j:slf4j-api:1.7.6 -> 1.7.7
\--- ch.qos.logback:logback-classic:1.1.2
     \--- org.springframework.boot:spring-boot-starter-logging:1.1.5.RELEASE
          \--- org.springframework.boot:spring-boot-starter:1.1.5.RELEASE
               \--- org.springframework.boot:spring-boot-starter-web:1.1.5.RELEASE
                    \--- compile

(*) - dependencies omitted (listed previously)

在输出中,我们可以看到slf4j-api被引用了3次,一次是jcl-over-slf4j,jul-to-slf4j和log4j-over-slf4j的传递依赖,一次是logback-classic的传递依赖,一次是直接依赖于编译配置。 我们还看到该版本在必要时会升至1.7.7,因为jcl-over-slf4j的传递依赖项定义了最新版本。

我们用于--dependency选项的值用于在依赖项的组,名称或版本属性中进行部分匹配。 例如,要查看对日志记录的所有依赖关系的了解,我们可以调用$ gradle dependencyInsight --dependency logging

我们还可以获得带有所有依赖项概述HTML报告页面。 要获得依赖关系见解,我们必须在HTML页面上单击所需的依赖关系,并且获得与命令行类似的输出。 首先,我们必须将project-report插件添加到我们的项目中。 接下来,我们调用dependencyReport任务。 任务完成后,我们可以在Web浏览器中打开build/reports/project/dependencies/index.html 。 当我们导航到编译配置并单击slf4j-api依赖项时,将得到以下输出:

Gradle-Dep-Insight

  • 用Gradle 2.0编写。

翻译自: https://www.javacodegeeks.com/2014/08/gradle-goodness-getting-more-dependency-insight.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值