android gradle publish.dependsOn('assemble ')不工作

dgiusagp  于 2023-06-27  发布在  Android
关注(0)|答案(2)|浏览(231)

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

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

但执行publish任务时出错:

  1. * What went wrong:
  2. Execution failed for task ':apn:publishLibraryPublicationToMavenRepository'.
  3. > Failed to publish publication 'library' to repository 'maven'
  4. > 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'),但仍然没有运气。
后来我改成了

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

但是project.tasks.findByName('publishLibraryPublicationToMavenRepository')返回null。
Gradle版本:4.10.1 Android gradle插件版本:3.3.0
任何帮助都很感激。先谢谢你了。

blmhpbnm

blmhpbnm1#

如果你想让你的publish*任务(来自maven-publish插件)依赖于相应的assemble*任务,请将以下内容添加到你的应用的build.gradle的根目录:

  1. /* Restricting publications to specific repositories */
  2. tasks.withType(PublishToMavenRepository) { task ->
  3. onlyIf {[...]}
  4. def match = task.name =~ '^publish(.*)(Release|Debug)PublicationTo(.*)$'
  5. dependsOn("assemble${match[0][1]}")
  6. }

汇编任务的名称是根据发布任务的名称计算得出的,发布任务的名称构造为publishPubNamePublicationToRepoNameRepository

oxcyiej7

oxcyiej72#

maven-publish插件根据配置的发布延迟添加任务,因此当project.tasks.findByName在另一个项目上执行时,这些任务还不可用。
如果将代码 Package 在afterEvaluate块中,则可以获得正确的结果:

  1. // Kotlin Syntax
  2. afterEvaluate {
  3. tasks.withType(PublishToMavenRepository::class.java) {
  4. dependsOn(tasks.assemble)
  5. }
  6. }

相关问题