Android库是在我正在工作的公司中托管的。该库将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
如何确保库的依赖项也成功下载或发布?
=======其他信息=======
库中使用" maven-publish"插件发布,并在gradle脚本中使用" pom.withxml"添加了依赖项,okhttp在库的pom文件中。
。<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.4.1</version>
</dependency>
您在依赖项中使用 @aar
符号。
这意味着您只想下载不包括所有嵌套依赖项的AAR工件。
您可以检查文档的这一部分:
检查Artifact only notation
部分:
仅工件符号创建一个模块依赖关系,该模块仅下载带有指定扩展名的工件文件。现有模块描述符被忽略。
使用@aar
表示法,如果要下载依赖项,则应添加transitive=true
。
我希望省略@Aar应该有效。