Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GradleMaven插件;安装";任务不适用于Android库项目_Java_Android_Maven_Installation_Gradle - Fatal编程技术网

Java GradleMaven插件;安装";任务不适用于Android库项目

Java GradleMaven插件;安装";任务不适用于Android库项目,java,android,maven,installation,gradle,Java,Android,Maven,Installation,Gradle,我想将android库项目安装到本地maven存储库中。 下面是build.gradle: 当我跑步时: 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 dir

我想将android库项目安装到本地maven存储库中。 下面是build.gradle:

当我跑步时:

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插件不兼容?

我刚刚通过定义上传存档解决了这个问题,如下所述:

召唤

gradle uploadArchives
将人工制品部署到(在我的例子中是本地的)Maven repo。
我还没有找到一种更简单、更灵活的方法来指定本地回购的url,例如mavenLocal(),但上述方法适合我的需要。

我只是通过定义上传存档解决了这个问题,如下所述:

召唤

gradle uploadArchives
将人工制品部署到(在我的例子中是本地的)Maven repo。
我还没有找到一种更简单、更灵活的方法来指定本地回购协议的url,例如mavenLocal(),但上述内容适合我的需要。

更新2014-11-26

在撰写本文时,当Android构建工具的版本为0.5.5时,下面的答案是有意义的。它现在很可能已经过时了,可能已经不起作用了

我个人已经将我的项目切换到使用
android maven plugin
,正如上面的回答所述,该插件与最新版本的android构建工具配合使用也很好

2014年2月的原始答案

发布为AAR

如果您不介意使用较旧版本的
com.android.tools.build:gradle
(即0.5.4),可以使用中描述的方法。根据,这在0.5.5中不起作用

将以下行添加到您的
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 repo,请调用以下命令:

gradle publishToMavenLocal
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 repo,请调用以下命令:

gradle publishToMavenLocal
gradle publishToMavenLocal

更新2014-11-26

在撰写本文时,当Android构建工具的版本为0.5.5时,下面的答案是有意义的。它现在很可能已经过时了,可能已经不起作用了

我个人已经将我的项目切换到使用
android maven plugin
,正如上面的回答所述,该插件与最新版本的android构建工具配合使用也很好

2014年2月的原始答案

发布为AAR

如果您不介意使用较旧版本的
com.android.tools.build:gradle
(即0.5.4),可以使用中描述的方法。根据,这在0.5.5中不起作用

将以下行添加到您的
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 repo,请调用以下命令:

gradle publishToMavenLocal
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 repo,请调用以下命令:

gradle publishToMavenLocal
gradle publishToMavenLocal

编辑:请参考github页面()了解最新说明,并找到正确的使用版本。原始说明不再适用于最新的gradle版本

原创帖子:

我已经修改了maven插件,使其与android库项目兼容。请参阅github上的项目:

配置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上告诉我,我会解决它。

编辑:请参阅github页面()以获取最新说明并找到正确的使用版本。原始说明不再适用于最新的gradle版本

原创帖子:

我已经修改了maven插件,使其与android库项目兼容。请参阅github上的项目:

配置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上告诉我,我会解决它。

如果您不想使用自定义插件,有一个更简单的解决方案。相反,只需使用其他名称重新创建安装任务。我把它叫做
installArchives
。将以下代码添加到您的
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
        }
    }
}
任务安装存档(类型:上载){
description“将工件安装到本地Maven存储库。”
mavenInstaller{
configuration=configurations.default
pom.groupId='my.group'
pom.artifactId='我的工件'
pom.version='1.0.0'
}
}

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

如果您不想使用自定义插件,有一个更简单的解决方案。相反,只需使用其他名称重新创建安装任务。我把它叫做
installArchives
。将以下代码添加到您的
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
        }
    }
}
任务安装存档(类型:上载){
description“将工件安装到本地Maven存储库。”
mavenInstaller{
configuration=configurations.default
pom.groupId='my.group'
pom.artifactId='我的工件'
pom.version='1.0.0'
}
}

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

详细说明CyclingSir的答案,我建议添加一个单独的“installArchives”任务。这还应该注意拾取自定义工件(