我在gradle中有一个多项目设置,结构有点平坦:
RootProject/
build.gradle
settings.gradle
SubProjectA/
build.gradle
anotherDirectory/
SubProjectB/
build.gradle
SubProjectC/
build.gradle
根项目实际上只是一个根构建。它将所有其他项目联系在一起。 SubProjectB依赖于SubProjectC,C依赖于A.
从根项目运行任务按预期工作。我可以运行gradle :SubProjectB:build
,它将构建SubProjectB及其依赖项而不会出错。
我的问题是,如果我尝试从子项目的目录运行一个任务,如果该子项目依赖于任何其他子项目,那么它就会失败,因为它不知道其他任何子项目的位置根项目的设置文件。因此,从其目录运行A的构建将起作用,但运行B或C将失败。
我可以在此结构中做些什么来定义根项目实际上是什么,这样如果我从B运行gradle build
,它的行为与从根项目运行gradle :SubProjectB:build
的行为相同目录?
最终目标是使命令行更容易使用gradle,并在子项目上获得功能默认任务。这样我就可以双击一个项目Eclipse的Gradle任务列表,让它运行默认任务,就好像它从root运行任务一样。
答案 0 :(得分:0)
在这种情况下,您可以使用composite builds
。假设您在SubProjectA
,并希望针对SubProjectB
进行构建。您可以执行以下命令:
gradle --include-build ../anotherDirectory/SubProjectB run
SubProjectB
将首先构建,然后SubProjectA
。