首页 > 解决方案 > gradle publish.dependsOn('assemble')不起作用

问题描述

我在我的 gradle 文件中添加了这一行:

project.tasks.findByName('publish').dependsOn('assemble')

publish但是执行任务时出现错误:

* What went wrong:
Execution failed for task ':apn:publishLibraryPublicationToMavenRepository'.
> Failed to publish publication 'library' to repository 'maven'
   > Invalid publication 'library': artifact file does not exist: '/Users/yuanhaodong/Projects/Bk/code_base/blackkey_android/modules/apn/build/outputs/aar/apn-release.aar'

我已经尝试过project.tasks.findByName('publish').dependsOn('assembleRelease'),但仍然没有运气。

然后我改为

project.tasks.findByName('publishLibraryPublicationToMavenRepository').dependsOn('assemble')

project.tasks.findByName('publishLibraryPublicationToMavenRepository')返回 null 。

Gradle 版本:4.10.1 Android gradle 插件版本:3.3.0

任何帮助表示赞赏。提前致谢。

标签: androidgradle

解决方案


如果您想让您的publish*任务(来自maven-publish插件)依赖于相应的assemble*任务,请将其添加到应用程序的根目录中build.gradle

/* Restricting publications to specific repositories */
tasks.withType(PublishToMavenRepository) { task ->
    onlyIf {[...]}

    def match = task.name =~ '^publish(.*)(Release|Debug)PublicationTo(.*)$'
    dependsOn("assemble${match[0][1]}")
}

组装任务的名称是根据发布任务的名称计算得出的,发布任务的名称构造为publish PubName PublicationTo RepoName Repository


推荐阅读