我想下载具有所有依赖项的给定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
选项,但结果相同。有什么方法可以下载包含所有传递依赖项的单个jar
或aar
文件?
更新:
作为一种解决方法,我尝试将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
结果文件列表:
到目前为止,还不错,但是当我尝试使用其他工件进行此方法时,它失败了。例如,考虑以下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
插件的文档,但是找不到满足我需求的内容。