下载具有所有依赖项的Android库

时间:2019-11-23 19:47:27

标签: maven android-library maven-dependency-plugin

我想下载具有所有依赖项的给定android库。假设我要下载com.android.support:appcompat-v7:21.0.3库。我搜索并发现目标为dependency的maven get插件最接近我的需求。所以我尝试了以下命令:

mvn -s settings.xml dependency:get -Ddest=./ -Dartifact=com.android.support:appcompat-v7:23.0.1:aar

带有以下settings.xml文件:

<settings>
  <profiles>
    <profile>
      <id>global</id>
      <repositories>
        <repository>
          <id>google</id>
          <name>Google Maven</name>
          <url>https://maven.google.com</url>
        </repository>
        <repository>
          <id>jcenter</id>
          <name>Jcenter</name>
          <url>https://jcenter.bintray.com</url>
        </repository>
      </repositories>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>global</activeProfile>
  </activeProfiles>
</settings>

该命令可以正常工作,并输出一个名为appcompat-v7.23.0.1.aar的文件,但不包含任何依赖项。我尝试在命令中添加-Dmdep.transitive=true选项,但结果相同。有什么方法可以下载包含所有传递依赖项的单个jaraar文件?

更新

作为一种解决方法,我尝试将Maven dependency插件用于copy-dependencies目标。因此,我创建了一个简单的pom.xml文件,如下所示:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1</version>
  <dependencies>
    <dependency>
      <groupId>com.android.support</groupId>
      <artifactId>appcompat-v7</artifactId>
      <version>23.0.1</version>
      <type>aar</type>
    </dependency>
  </dependencies>
</project>

我运行了以下命令,并希望得到库文件及其传递依赖项:

mvn -s settings.xml dependency:copy-dependencies -f pom.xml

结果文件列表:

  • appcompat-v7-23.0.1.aar
  • support-v4-23.0.1.aar
  • support-annotations-23.0.1.jar

到目前为止,还不错,但是当我尝试使用其他工件进行此方法时,它失败了。例如,考虑以下android库:com.facebook.fresco:animated-gif:2.0.0。当我运行copy-dependencies命令时,它抱怨它找不到依赖项工件com.facebook.fresco:fbcore:2.0.0:jar,这是正确的,因为该工件具有aar类型,而不是jar类型。问题的根源是在aar的pom中没有使用com.facebook.fresco:animated-gif类型声明此依赖关系。 com.facebook.fresco:animated-gif工件的pom可能是错误的。我发现这种情况确实适用于其他一些人工制品。

对这个问题有任何想法吗?

附言::我已经阅读了maven android插件的文档,但是找不到满足我需求的内容。

0 个答案:

没有答案