Gradle复合构建:如何从根项目中禁用包含的生成任务?

e4yzc0pl  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(185)

我有一个复合Gradle(7.x)构建版本,希望编辑根项目Gradle文件以永久阻止执行特定的包含任务。我可以使用-x :included-build:bad-task从命令行成功完成此操作,但无法确定如何在根Gradle脚本中永久完成相同的操作。这些问题的解决方案似乎都不起作用:

wwtsj6pe

wwtsj6pe1#

如果您知道它是如何包含的,则可以将其删除。
例如,check依赖于checkstyleTest,可以通过check.dependsOn.remove("checkstyleTest")删除
参见此处:https://discuss.gradle.org/t/how-to-remove-a-task-dependency/7481
可能需要做一些调查工作来找出它是从哪里引入的。像./gradlew whateverTask --dry-run这样的东西可以用来显示进度。各种临时任务可以用来输出配置信息。

编辑1

没有更多的背景,很难准确地了解你的需求。但是,根据你的需求,下面的方法可能会在你的顶级项目中起作用:

gradle.projectsEvaluated {
    childProjects["included-build"].tasks.build.dependsOn -= "bad-task"
}

重点是...

  • 任务将在项目评估后移除(因此它首先存在)。
  • 删除操作使用-=运算符。防止使用.remove时发生Removing a task dependency from a task instance is not supported.
  • 使用Gradle 8.0.1

使用类似的命令运行此命令,成功地将checkbuild中删除。
childProjects["application"].tasks.build.dependsOn -= "check"

相关问题