私有Maven仓库中的Android库的子依赖项不会被项目下载

时间:2017-02-24 03:34:52

标签: android maven android-gradle android-library

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

如何确保成功下载或发布库的依赖项?

======其他信息=======

该库使用“maven-publish”插件发布,并且在gradle脚本中使用“pom.withXml”添加依赖项,并且okhttp位于库的POM文件中。

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>3.4.1</version>
</dependency>

1 个答案:

答案 0 :(得分:3)

您在依赖项中使用 @aar 表示法。

这意味着您只想下载除了所有嵌套依赖项之外的aar工件 您可以查看documentation的这一部分:
查看Artifact only notation部分:

  

仅工件表示法创建模块依赖项,该依赖项仅下载具有指定扩展名的工件文件。 忽略现有模块描述符

如果要下载依赖项,请使用@aar表示法,添加transitive=true

我希望省略@aar它应该有用。