如果我有这样的gradle多项目
RootProject
+-- SubProjectA
+-- SubProjectB
每个项目都有一个任务“foo”,我可以在根项目上调用它
RootProject>gradle foo
并且它也为子项目执行
:foo
:SubProjectA:foo
:SubProjectB:foo
但是如果我从子项目中调用任务':foo'
RootProject\SubProjectA>gradle :foo
仅执行根项目上的任务
:foo
但不是子项目上的“foo”任务。
在子项目中时,是否可以在所有项目上调用“foo”?我之所以这样问是因为我正在使用gradle eclipse插件,并且在那里我只能访问子项目,即我在eclipse中看到的项目。
顺便说一句:到目前为止,我想出了(有些hacky)解决方案
task fooAll(type:Exec) {
workingDir '..'
commandLine 'cmd', '/c', 'gradle foo'
}
最佳答案
将任务名称(例如foo
)解析为任务是开始目录的功能,该目录默认为当前目录。您可以使用-p
命令行选项更改开始目录(请参阅gradle --help
)。因此,您必须执行类似gradle foo -p ../
的操作。
另外,导入根项目可能是解决Eclipse问题的更好方法。 Eclipse工具可以很好地处理分层目录布局。
PS::foo
是任务路径。它引用根项目(foo
)中名为:
的任务。