在我们的大多数项目中,我们都依赖于其他代码,例如库或其他项目。 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 Bootcompile "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
\--- compileorg.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 2.0编写。
翻译自: https://www.javacodegeeks.com/2014/08/gradle-goodness-getting-more-dependency-insight.html