我有一个多项目构建。子项目采用树形结构(非平面)。 在root build.gradle文件中,我有一个方法可以为编译阶段做一些常见的事情。
我想为每个子项目分别设置目标目录。因此,当我编译整个项目时,我将为每个子项目拥有自己的工件。 我上面提到的方法进行编译,因此需要知道它编译的项目。
如果我使用“gradle:subproject1:subsubproject1:compile”命令,则project.name仍包含根项目名称。但我需要在运行时知道调用方法的任务项目。
问题是:
答案 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