手动添加带有依赖性pom / iml文件的aar

由于我不能使用私人专家来共享我的图书馆,我正在考虑共享aar并导入另一个项目。 当aar和jar文件不包含任何依赖项时,问题就出现了。 所以一旦我在android studio中手动导入aar(使用Import .JAR / .AA Package)就没有依赖关系,我必须再次手动添加所有依赖项。 我已经通过gradle任务生成了一个pom文件,虽然我找不到任何方法在项目上手动导入它。

在“导入.JAR / .AA包”自动生成的build.gradle文件中:

configurations.maybeCreate("default") artifacts.add("default", file('TestSample_1.0.0.aar')) 

有没有办法添加pom / iml文件? 就像是:

 artifacts.add("default", file('pomDependencies.xml')) 

1.出版

在您的aar项目中,添加maven-publish插件并添加必要的插件配置。

 apply plugin: 'com.android.library' apply plugin: 'maven-publish' ... dependencies { testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.novoda:bintray-release:0.2.7' } ... publishing { publications { maven(MavenPublication) { groupId 'com.example' //You can either define these here or get them from project conf elsewhere artifactId 'example' version '0.0.1-SNAPSHOT' artifact "$buildDir/outputs/aar/app-release.aar" //aar artifact you want to publish //generate pom nodes for dependencies pom.withXml { def dependenciesNode = asNode().appendNode('dependencies') configurations.compile.allDependencies.each { dependency -> def dependencyNode = dependenciesNode.appendNode('dependency') dependencyNode.appendNode('groupId', dependency.group) dependencyNode.appendNode('artifactId', dependency.name) dependencyNode.appendNode('version', dependency.version) } } } } //publish to filesystem repo repositories{ maven { url "$buildDir/repo" } } } 

几点注意事项:

  1. 我们正在使用自定义maven发布,因此您必须使用artifact子句定义要发布的内容

  2. 我们必须自己生成pom,在上面的代码中我使用了所有编译配置依赖项,您可能希望确保涵盖所有您关心的配置。

运行gradle publish将发布到maven repo结构到repo文件夹,然后您可以从其他项目中使用该文件夹。

2.使用已发布的.aar

在另一个android项目中,使用#1中发布的aar:在顶级build.gradle中:

 allprojects { repositories { jcenter() maven { url "D:/full/path/to/repo" } } } 

将早期repo的路径添加为maven存储库。 请注意,您可能必须使用完整路径,因为$buildDir具有此项目的不同值。 在你的app build.gradle中:

 dependencies { ... other dependencies ... compile ('com.example:example:0.0.1-SNAPSHOT@aar'){transitive=true} } 

transitive=true才能从pom文件中获取传递依赖项。