1

如果我有这样的 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'
}
4

1 回答 1

1

将任务名称(例如)解析为foo任务是start directory的函数,默认为当前目录。-p您可以使用命令行选项更改启动目录(请参阅 参考资料gradle --help)。所以你必须做类似的事情gradle foo -p ../

此外,导入根项目可能是解决 Eclipse 问题的更好方法。Eclipse 工具可以很好地处理分层目录布局。

PS::foo是一个任务路径。它指的foo是根项目 ( :) 中命名的任务。

于 2013-03-28T15:41:09.947 回答