建立multi-project,须要在rootProject的目录下新建settings.gradle.java
目录: I:\gretty\hello-gradle\multi-Project Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2014/11/8 14:04 .gradle d---- 2014/11/8 14:00 flower d---- 2014/11/8 14:00 tree -a--- 2014/11/8 14:11 267 build.gradle -a--- 2014/11/8 14:05 23 settings.gradle
根据上面的目录咱们能够像这样设置settings.gradlegradle
include 'tree','flower'
执行gradle projectsui
PS I:\gretty\hello-gradle\multi-Project> gradle projects :projects ------------------------------------------------------------ Root project ------------------------------------------------------------ Root project 'multi-Project' +--- Project ':flower' \--- Project ':tree' To see a list of the tasks of a project, run gradle <project-path>:tasks For example, try running gradle :flower:tasks BUILD SUCCESSFUL Total time: 4.414 secs
这样咱们就新建了一个gradle 的multi-project的项目。lua
涉及到multi-project的设置,有allProjects subProjects,能够对其进行配置。code
1 allProjects,包括rootProject和全部的subProject均可以根据allProject中的配置构建项目。it
allprojects { task printInfo << { println "This is ${project.name}" } 咱们执行gradle printInfo PS I:\gretty\hello-gradle\multi-Project> gradle printInfo :printInfo This is multi-Project :flower:printInfo This is flower :tree:printInfo This is tree BUILD SUCCESSFUL Total time: 6.189 secs
能够看到rootProject和subProject都执行task printInfo。ast
2 subprojects,只有子项目执行的任务class
subprojects { task printInfo << { println "Can be planted" } } PS I:\gretty\hello-gradle\multi-Project> gradle printInfo :flower:printInfo Can be planted :tree:printInfo Can be planted BUILD SUCCESSFUL
3 咱们还可使用project(":tree"),来指定项目运行任务配置
allprojects { task printInfo << { println "This is ${project.name}" } } subprojects { printInfo << { println "Can be planted" } } project(':tree').printInfo << { println "Has leaves" } project(':flower') { printInfo.doLast { println 'Smells nice' } } 执行 gradle printInfo PS I:\gretty\hello-gradle\multi-Project> gradle printInfo :printInfo This is multi-Project :flower:printInfo This is flower Can be planted Smells nice :tree:printInfo This is tree Can be planted Has leaves BUILD SUCCESSFUL Total time: 8.444 secs
从上面的输出咱们也能够看得出任务的执行顺序。im
4 过滤配置
allprojects { task printInfo << { println "This is ${project.name}" } } configure(allprojects.findAll { it.name.startsWith('f') }) { printInfo << { println 'Smells nice' } } PS I:\gretty\hello-gradle\multi-Project> gradle printInfo :printInfo This is multi-Project :flower:printInfo This is flower Smells nice :tree:printInfo This is tree BUILD SUCCESSFUL Total time: 8.195 secs
使用afterEvaluate 进行过滤
allprojects { task printInfo << { println "This is ${project.name}" } } subprojects { afterEvaluate { project -> if (project.hasLeaves) { project.printInfo << { println 'Has leaves' } } } } project(':flower') { ext.hasLeaves = false } project(':tree') { ext.hasLeaves = true } 执行gradle printInfo PS I:\gretty\hello-gradle\multi-Project> gradle printInfo :printInfo This is multi-Project :flower:printInfo This is flower :tree:printInfo This is tree Has leaves BUILD SUCCESSFUL