当前位置: 首页 > 知识库问答 >
问题:

分级“构建”任务混乱

锺离嘉茂
2023-03-14

嗨,我有多项目分级设置

-root_project
|-sub_project1
|-sub_project2
|-sub_project3

所有的工作都很好,但有一件事让我抓狂。在生成脚本中:

defaultTasks 'build' <- this works just fine

task buildroom (description: 'This task is invoked by build room script, invokes default task plus publishes artifacts') { 
//    dependsOn('build') <-- this doesn't work

// alternative 
dependsOn(":sub_project1:build")
dependsOn(":sub_project2:build")

当我从命令行“gradlew”调用时<-默认任务将被执行

当我从命令行“gradlew tasks”<-task“All task runnable from root project”下调用时,我看到“build”

但当我尝试添加dependsOn('build')、dependsOn(':build')或dependsOn(':root:build')时,它会告诉我

错误:任务“:任务”执行失败。

“base”插件添加了“assemble”和“clean”任务,但没有生成...

有什么提示吗?

共有1个答案

叶恩
2023-03-14

build任务由java-base插件声明。您的根项目可能没有(直接或间接)应用java-base,因此没有build任务。这就是为什么dependson(“build”)在同一项目中添加对名为build的任务的任务依赖项,最终会导致错误的原因。defaulttasks的不同之处在于:

  • 它只接受任务名称(而dependson也接受任务路径和task对象)。
  • 它的任务名称被解析为任务,就像任务名称是在命令行中输入的一样。换句话说,将搜索所有项目以查找具有给定名称的任务,并返回匹配的任务集。
 类似资料:
  • 我在Gradle.properties中使用sourceCompatibility=1.7,Gradle JVM(设置,Gradle,Intellij IDEA)是1.8.0_171和 在大楼里。 当我运行构建任务(tasks->build->build Intellij IDEA)时,我在compileJava任务期间得到“错误:不兼容类型:推断的类型不符合等式约束”。 如果我将Gradle J

  • 3.3.3 Android 任务 Android plugin 使用了同样的约定规则以和其他插件保持兼容,并且又添加了一些额外的引导任务: assemble 这个任务会汇集工程的所有输出。 check 这个任务会执行所有校验检查 connectedCheck 运行 checks 需要一个连接的设备或者模拟器,这些checks将会同时运行在所有连接的设备上。 deviceCheck 通过 API 连

  • 7.2 操纵任务 普通的 Java 工程有一个有限的任务集合,这些任务相互配合创建一个输出。 classes 是一个编译Java源代码的任务。 在 build.gradle 中通过脚本访问和使用 classes 任务是很简单的。可以通过 project.tasks.classes 快捷访问。 对于 Android 工程来说就比较复杂了,因为可能有很多相同的任务,他们的名字是基于 Build Typ

  • 我在以可管理的方式组织构建时遇到了问题。在我的gradle构建中有大量的任务,因为对于每个特定的工作元素,gradle都需要一个这种类型的任务。例如:复制一个文件分级需要复制任务类型,压缩一个文件分级需要压缩任务类型,删除几个文件分级需要删除任务类型。Javadoc、Jar、Ear等也需要它们的任务类型。最终,build有大量的任务,要以特定的顺序运行所有这些任务,我必须使用 将这些规则应用于所有

  • 3.3.2 Java 工程任务 Java plugin 创建了两个主要的任务,主要的引导任务都依赖他们。 assemble jar 这个任务创建所有输出 check test 这个任务运行所有测试 jar 任务直接或者间接的依赖其他任务:比如 classes 会编译所有Java代码. testClasses 会编译所有测试,但是它很少使用,因为 test 这个任务依赖它(和 classes 差不多

  • Android plugin 使用相同的约定以兼容其他插件,并且附加了标志性的 task,包括: assemble 组合项目所有输出 check 执行所有检查 connectedCheck 在一个连接的设备或者模拟器上执行检查,它们可以在所有连接的设备上并行执行检查 deviceCheck 通过 APIs 连接远程设备来执行检查,主要用于 CI(Continuos integration ,持续集