Gradle 渐变指定子项目的设置目录路径

Gradle 渐变指定子项目的设置目录路径,gradle,multi-project,Gradle,Multi Project,在多项目构建中,我有一个模块,它本身由两个子项目组成。如果我只想选择构建顶层模块,但同时也要确保其中的两个子项目都已构建,那么我如何实现这一点 include 'moduleA', 'moduleB', 'moduleC' (root project settings.gradle) project(':moduleC').projectDir = new File('path to custom module that includes sub-projects) project(':modu


在多项目构建中,我有一个模块,它本身由两个子项目组成。如果我只想选择构建顶层模块,但同时也要确保其中的两个子项目都已构建,那么我如何实现这一点

include 'moduleA', 'moduleB', 'moduleC' (root project settings.gradle)
project(':moduleC').projectDir = new File('path to custom module that includes sub-projects)
project(':moduleC').settingsDir = ?? (gradle fails because there is no settingsDir path)
但moduleC本身有一个settings.gradle

include 'api'
include 'server'
现在,我希望在指定
gradlew:moduleC:build
时触发这两个选项,但它只构建moduleC根项目。有办法吗?这个用例对我来说似乎是有效的(即,对于模块化,您希望将子项目的包含保持在moduleC级别,而不是根级别)。

谢谢,

Paddy

从Gradle 2.2开始,仅支持单个
设置。每个版本都支持Gradle
。如果该文件包含
include“moduleC:api”
include“moduleC:server”
,那么从
moduleC
的项目目录运行
gradle build
也将构建
api
server

Hi@Peter,如果我从根项目目录尝试它,gradlew:moduleC:build将做什么?它还会同时生成api和服务器吗?还是只有在我从moduleC的项目目录运行gradle时才会发生这种情况?不,它只会在
moduleC
中运行
build
任务(如果没有,则会出错)。当然,您总是可以声明自己的任务,例如
dependsOn:moduleC:api:build“
dependsOn:moduleC:server:build”
。它是否像任务['':moduleC:build'].dependsOn(':moduleC:api:build')?根据您的确切动机/需求,您可能会执行类似于
task buildAll{dependsOn build,“:moduleC:api:build”,“:moduleC:server:build”}
moduleC/build.gradle
中。我使用了一种技术来绕过这个限制: