私有 Maven 存储库中的 Android 库子依赖项未由项目下载



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应该有效。

最新更新