一个大的工程往往有很多模块,对这些子模块进行分别的管理使用 gradle 是非常方便的。
我们可以在总工程下配置 setting.gradle 文件,指定里面有哪些子模块。然后总工程下面有一个 build.gradle 文件指定总工程应该如何构建,也可以进一步指定子模块应该怎样构建。如果没有后者,也可以在各个子模块的工程文件夹中指定它们分别应该怎样被构建。
举例如下:
总览
webank 目录
summer 目录
test 目录
test 全部依赖于工程
webank 部分 jar 依赖部分工程依赖
这个工程是一个框架,分为技术和业务两部分,即 summer 和 webank。 test 是用于测试框架层的,单元测试没有直接放在 summer 和 webank 中,是因为想提供一种准生产情况的模拟:产品层工程依赖于框架层并且独立存在,所以一定在在其它的工程中来测试框架层,不能直接在框架层工程中测试框架层,当然,在编写框架层的过程中,可以直接这样做,只是编写完成后,需要那样做。
在实际生产环境上, webank 应该依赖于 summer 提供的 jar 包,而非直接依赖工程。所以 webank 的 build.gradle 文件中配置的 summer 是 jar 依赖,webank 中的各个子工程之间是工程依赖,而 test 中依赖的是 webank 和 summer 的工程依赖。summer 中的各个子工程也是工程依赖。
在这种架构下,在 webank 目录下使用 gradle assemble 可以打出所有 webank 工程的 jar 包,在 summer 下使用 gradle assemble 就能够打出所有 summer 的 jar 包。也可以使用形如 gradle :webank_transfer:assemble 命令只打包 webank_transfer 工程。如果使用 eclipse 调试 test ,则可以在 test 目录下使用 gradle eclipseClasspath 更新依赖的 classpath 后再调试。
一定要弄清楚各个工程之间的依赖关系。