2017-08-18 123 views
0

我有一个gradle这个多项目的设置,象这样一个有点扁平结构:运行从一个子项目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任务列表,并让它运行默认任务,就像它从根目录运行任务一样。

回答

0

在这种情况下,您可以使用composite builds。假设你在SubProjectA并且想要针对SubProjectB构建。在你可以执行以下命令:

gradle --include-build ../anotherDirectory/SubProjectB run 

SubProjectB将先建,然后SubProjectA

相关问题