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

mrz*_*iak 7 groovy gradle

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

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

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

问题是:

  1. 对于子项目有单独的目标,这是一个好主意吗?
  2. 如何在这个方法中理解调用方法的任务项目?

Amn*_*hot 10

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

allprojects {
    task printProjName << {
        println ">> " + project.name
    }
}
Run Code Online (Sandbox Code Playgroud)

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

:printProjName
>> Gradle
:projA:printProjName
>> projA
:projB:printProjName
>> projB
:projA:projA1:printProjName
>> projA1
:projA:projA2:printProjName
>> projA2
Run Code Online (Sandbox Code Playgroud)