Android库托管在我正在使用的公司的私有Maven Artifactory仓库中 . 这个库使用okhttp作为依赖项之一 .
在应用程序项目中,我导入此库:
编译'com.domain.artifact:myartifact:1.0.0@aar'
导入了库,但是当我在库中调用API时,由于缺少okhttp类,应用程序因ClassNotFoundException而崩溃 .
执行gradle命令来打印依赖项表明应用程序项目没有下载任何库的依赖项(包括okhttp)
+--- com.domain.artifact:myartifact:1.0.0
\--- com.android.support:appcompat-v7:25.0.1
\--- com.android.support:support-v4:25.0.1
+--- com.android.support:support-compat:25.0.1
| \--- com.android.support:support-annotations:25.0.1
+--- com.android.support:support-media-compat:25.0.1
| \--- com.android.support:support-compat:25.0.1 (*)
+--- com.android.support:support-core-utils:25.0.1
| \--- com.android.support:support-compat:25.0.1 (*)
\--- com.android.support:support-core-ui:25.0.1
How can I ensure that the library's dependencies are also downloaded or published successfully?
======附加信息=======
该库使用“maven-publish”插件发布,并且在gradle脚本中使用“pom.withXml”添加依赖项,并且okhttp位于库的POM文件中 .
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.4.1</version>
</dependency>
1 回答
您在依赖项中使用 @aar 表示法 .
这意味着您只想下载除了所有嵌套依赖项之外的aar工件 .
你可以查看documentation的这一部分:
检查
Artifact only notation
部分:如果要下载依赖项,请使用
@aar
表示法,添加transitive=true
.我希望省略@aar它应该工作 .