首页 > 解决方案 > 将自定义任务集成到多项目构建的生命周期中

问题描述

我有一个包含两个 java 库模块“A”和“B”的多项目构建。“B”依赖于模块“A”:

dependencies {
  api ':A'
}

现在我想编写一个提供自定义任务“myGenerator”的自定义插件。“myGenerator”必须在编译模块“B”中的任何类(任务 compileJava)之前运行,但在组装模块“A”之后(“myGenerator”将实现需要模块“A”的一些资源的代码生成器)。

我应该如何配置任务'myGenerator'?如果我说

compileJava.dependsOn myGenerator

gradle assemble在模块“B”中运行,“myGenerator”仍然在组装模块“A”之前被执行。

不知何故,我必须配置“myGenerator”以依赖于模块“A”的配置“api”。我怎样才能做到这一点?

标签: gradlebuild.gradlegradle-plugin

解决方案


你只从你的句子中表达了一种依赖:

“myGenerator”必须在编译模块“B”中的任何类(任务 compileJava)之前但在组装模块“A”之后运行

你需要表达另一个:

myGenerator.dependsOn project(':A').jar // or the relevant assembly task of your build

推荐阅读