提问人:zeus 提问时间:11/9/2022 更新时间:11/9/2022 访问量:4746
使用 gradle 如何获取库的依赖树?
With gradle how to get the dependency tree of a library?
问:
假设我想用gradd检索这个工件的依赖树:com.google.firebase:firebase-firestore:24.4.0
我该怎么办?
答:
0赞
Ben Borchard
11/9/2022
#1
如果它是项目的依赖项,您应该能够运行
gradle dependencies
并查看整个项目的依赖关系树(包括此项目的子树)
此问题的答案中提供了更多详细信息:使用 Gradle 查找依赖关系树
3赞
George
11/9/2022
#2
你不能这样做,aar 本身不包含任何依赖项信息。
此 aar 的所有信息都存储在 pom.xml 中,可以通过 google maven 存储库在此处找到。
这只会告诉你命令会做什么,这些是传递依赖关系,意思是这个 aar 的直接依赖关系,默认情况下,Gradle 会自动解析它们。Gradle dependencies
的pom.xml
com.google.firebase:firebase-firestore:24.4.0
<?xml version='1.0' encoding='UTF-8'?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-firestore</artifactId>
<version>24.4.0</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>androidx.annotation</groupId>
<artifactId>annotation</artifactId>
<version>1.1.0</version>
<scope>compile</scope>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.google.android.gms</groupId>
<artifactId>play-services-base</artifactId>
<version>18.0.1</version>
<scope>compile</scope>
<type>aar</type>
</dependency>
</dependencies>
<name>firebase-firestore</name>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
</project>
这包括它有自己的pom.xml
com.google.android.gms
pom.xml
<?xml version='1.0' encoding='UTF-8'?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.google.android.gms</groupId>
<artifactId>play-services-basement</artifactId>
<version>18.1.0</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>androidx.collection</groupId>
<artifactId>collection</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
<type>jar</type>
</dependency>
<dependency>
<groupId>androidx.core</groupId>
<artifactId>core</artifactId>
<version>1.2.0</version>
<scope>compile</scope>
<type>aar</type>
</dependency>
<dependency>
<groupId>androidx.fragment</groupId>
<artifactId>fragment</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
<type>aar</type>
</dependency>
</dependencies>
<name>play-services-basement</name>
<licenses>
<license>
<name>Android Software Development Kit License</name>
<url>https://developer.android.com/studio/terms.html</url>
<distribution>repo</distribution>
</license>
</licenses>
</project>
我想说的是,除非您使用自定义任务迭代流程并自己获取依赖项的 POM 文件,否则您只能使用命令来检查您的项目或模块使用的传递依赖项。gradle dependencies
更新:
您可以按照以下简单步骤轻松启动新的 gradle 项目。
mkdir gradleExp
cd gradleExp
gradle init
# 1.基础 1.时髦的随机名称- 使用以下命令更新空值
build.gradle
plugins {
id 'java'
}
repositories {
google()
mavenCentral()
}
dependencies {
implementation "com.google.firebase:firebase-firestore:24.4.0"
}
gradle dependencies
# 列出全部gradle dependencies --configuration compileClasspath
# 减少输出以仅显示 编译源集 'main' 的类路径
注意:缺少任何一个或将在显示的结果中显示一些失败。google()
mavenCentral()
评论
0赞
zeus
11/9/2022
是否可以创建一个仅包含我的依赖项的空项目来运行它 gradle 依赖项?如果是,怎么办?
1赞
George
11/9/2022
是的,我相信这很简单,我现在将更新我的答案。
0赞
zeus
11/18/2022
我的解决方案有一个奇怪的问题,我在这里打开了一个新的 SO,里面有这个问题:stackoverflow.com/questions/74482724/......
1赞
George
11/22/2022
我已经为您的问题添加了一个答案,现在应该可以正常工作了。
评论