Gradle Maven插件“安装”任务不适用于Android库项目

我想安装Android库项目到本地的Maven仓库。 这里是build.gradle

buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android-library' apply plugin: 'maven' version = "1.0.0-SNAPSHOT" group = "com.example" repositories { mavenCentral() } android { compileSdkVersion 18 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 9 targetSdkVersion 18 } } 

当我运行:

 gradle install -i 

它卡在这里:

 Executing task ':project:installTest' due to: Task has not declared any outputs. Starting process 'command 'd:\android-sdk-windows\platform-tools\adb.exe''. Working directory: D:\Projects\java\....... Command: d:\android-sdk-windows\platform-tools\adb.exe install -r D:\Projects\java\.......\build\apk\project.apk An attempt to initialize for well behaving parent process finished. Successfully started process 'command 'd:\android-sdk-windows\platform-tools\adb.exe'' > Building > :project:installTest 

所以我首先注意到的是,它试图以一些奇怪的原因将它部署在APK设备上。

我做错了什么,或者它只是Android的库插件不兼容的Maven插件?

Solutions Collecting From Web of "Gradle Maven插件“安装”任务不适用于Android库项目"

编辑:请参阅github页面( https://github.com/dcendents/android-maven-gradle-plugin )了解最新的说明,并find正确的版本使用。 原来的说明不适用于最新的gradle版本。

原帖:

我已经修改了maven插件与android库项目兼容。 在github上查看项目: https : //github.com/dcendents/android-maven-gradle-plugin

configuration你的android库项目来使用它:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.github.dcendents:android-maven-plugin:1.0' } } apply plugin: 'android-library' apply plugin: 'android-maven' 

那么你应该可以使用安装任务将aar安装到你的本地maven仓库中。

希望这有助于,如果你发现插件的问题,请让我知道Github,我会解决它。

在CyclingSir的答案详细阐述,我build议添加一个单独的“installArchives”任务。 这也应该照顾拿起你的自定义文物(例如来源)。

 apply plugin: 'maven' task installArchives(type: Upload) { description "Installs the artifacts to the local Maven repository." configuration = configurations['archives'] repositories { mavenDeployer { repository url: repositories.mavenLocal().url } } } 

请注意,使用Gradle Android插件v0.5.5, gradle install仍会尝试在设备上安装某些东西。

如果您不想使用自定义插件,则有一个更简单的解决scheme。 相反,只需使用其他名称重新创build安装任务即可。 我把它叫做installArchives 。 将下面的代码添加到您的build.gradle

 task installArchives(type: Upload) { description "Installs the artifacts to the local Maven repository." repositories.mavenInstaller { configuration = configurations.default pom.groupId = 'my.group' pom.artifactId = 'my-artifact' pom.version = '1.0.0' } } 

您现在可以运行gradle installArchives来安装您的aar本地。

更新2014-11-26

下面的答案在编写的时候是合理的,当时Android Build Tools的版本是0.5.5。 现在很可能已经过时,可能不再工作了。

我已经亲自将我的项目转换为使用android-maven-plugin ,如上面的答案中所述,该插件也可以与最新版本的Android构build工具一起使用。

来自2014年2月的原始答复

作为AAR发布

如果您不介意使用旧版本的com.android.tools.build:gradle (即0.5.4),则可以使用此博客文章中描述的方法。 不是根据adt-dev邮件列表中的讨论 ,这在0.5.5中不起作用。

build.gradle添加到您的build.gradle

 apply plugin: 'maven-publish' // load bundleRelease task // this will not load the task in 0.5.5 android.libraryVariants publishing { publications { maven(MavenPublication) { artifact bundleRelease } } } 

要发布到您的本地maven回购,请调用此命令:

 gradle publishToMavenLocal 

作为JAR发布

如果您的Android库没有自定义资源并且可以作为JAR发布,那么您可以使用下面的build.gradle ,即使在0.5.5下也可以。

 // build JAR file task androidReleaseJar(type: Jar, dependsOn: assembleRelease) { from "$buildDir/classes/release/" } apply plugin: 'maven-publish' publishing { publications { maven(MavenPublication) { artifact androidReleaseJar } } } 

要发布到您的本地maven回购,请调用此命令:

 gradle publishToMavenLocal 

我刚刚通过定义一个上传档案来解决这个问题: Gradle documentation 52.6.2。 部署到Maven仓库

 uploadArchives { repositories { mavenDeployer { repository(url: "file://${System.env.HOME}/.m2/repository/") } } } 

调用

 gradle uploadArchives 

部署人工制品(在我本地)Maven回购。 我没有find一个简单和更灵活的方式来指定本地回购的URL与例如mavenLocal()但上述适合我的需要。