在gradle中获取任务的项目名称

时间:2015-03-31 12:02:35

标签: groovy gradle

我有一个多项目构建。子项目采用树形结构(非平面)。 在root build.gradle文件中,我有一个方法可以为编译阶段做一些常见的事情。

我想为每个子项目分别设置目标目录。因此,当我编译整个项目时,我将为每个子项目拥有自己的工件。 我上面提到的方法进行编译,因此需要知道它编译的项目。

如果我使用“gradle:subproject1:subsubproject1:compile”命令,则project.name仍包含根项目名称。但我需要在运行时知道调用方法的任务项目。

问题是:

  1. 根据子项目单独设定目标是否是个好主意?
  2. 如何理解在此方法中调用方法的任务项目?

1 个答案:

答案 0 :(得分:9)

如果在子项目中定义了任务,那么您只需使用project.name来获取运行任务的项目的名称。 您可以尝试一下,例如将以下代码添加到根项目中的build.gradle:

allprojects {
    task printProjName << {
        println ">> " + project.name
    }
}

然后,执行printProjName任务将产生类似于下面的输出:

:printProjName
>> Gradle
:projA:printProjName
>> projA
:projB:printProjName
>> projB
:projA:projA1:printProjName
>> projA1
:projA:projA2:printProjName
>> projA2