首页 文章

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

提问于
浏览
2

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 回答

  • 3

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

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

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

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

    我希望省略@aar它应该工作 .

相关问题