示例1:各子项目单独配置
项目结构:
.
├── child1
│ ├── build.gradle
│ └── src
│ └── main
│ └── java
│ └── gradle
│ └── hello
│ └── child1
│ └── Calculate.java
├── child2
│ ├── build.gradle
│ └── src
│ └── main
│ └── java
│ └── gradle
│ └── hello
│ └── child2
│ └── CalculateService.java
├── build.gradle
└── settings.gradle
该示例中没有根项目,只有两个子项目child1
、child2
。
根目录文件
build.gradle 内容为空。
setting.gradle 内容如下:
rootProject.name = 'gradle-demo-0001'
include 'child1'
include 'child2'
child1/build.gradle 内容为:
group 'gradle.hello'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
child1 项目
child1 中的 build.gradle 内容如下:
group 'gradle.hello'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
child1 中的 Calculate 类内容为:
package gradle.hello.child1;
public class Calculate {
public static int add(int a, int b) {
return a+b;
}
}
child2 项目
child2 中的 build.gradle 类内容为:
group 'gradle.hello'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile project(':child1') // 声明对 child1 项目的依赖
testCompile group: 'junit', name: 'junit', version: '4.12'
}
child2 中的 CalculateService 类内容为:
package gradle.hello.child2;
import gradle.hello.child1.Calculate; // 注意,这个是 child1 中的类
public class CalculateService {
public static void main(String[] args) {
int result = Calculate.add(1, 2);
System.out.println(result);
}
}
运行 CalculateService ,会输出 3。
查看所有任务(包括子项目的任务)
$ gradle tasks --all
示例2:集中配置子项目
项目结构:
.
├── child1
│ └── src
│ ├── main
│ ├── java
│ │ └── gradle
│ │ └── hello
│ │ └── child1
│ │ └── Calculate.java
│ └── resources
├── child2
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── gradle
│ │ │ └── hello
│ │ │ └── child2
│ │ │ └── CalculateService.java
│ │ └── resources
├── build.gradle
└── settings.gradle
结构和示例1类似,但是 child1 和 child2 中没有 build.gradle 文件。
根目录下的 settings.gradle 内容:
rootProject.name = 'gradle-demo-0002'
include 'child1'
include 'child2'
根目录下的 build.gradle 内容:
group 'gradle.hello'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
subprojects { // 给所有的子项目进行配置
apply plugin: 'java'
repositories {
mavenCentral()
}
}
// 配置 child1 子项目
project(":child1") {
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
}
// 配置 child2 子项目
project(":child2") {
dependencies {
compile project(":child1") // 声明对 child1 的依赖
testCompile group: 'junit', name: 'junit', version: '4.12'
}
}
执行 child2 下的 CalculateService ,会输出 3。
示例3:同时配置子项目和根项目
项目结构:
.
├── settings.gradle
├── build.gradle
├── child1
│ └── src
│ ├── main
│ ├── java
│ │ └── gradle
│ │ └── hello
│ │ └── child1
│ │ └── Calculate.java
│ └── resources
├── child2
│ └── src
│ ├── main
│ ├── java
│ │ └── gradle
│ │ └── hello
│ │ └── child2
│ │ └── CalculateService.java
│ └── resources
└── src
├── main
├── java
│ └── gradle
│ └── hello
│ └── Main.java
└── resources
结构和示例2类似,但是在根目录下增加了 src 目录,作为根项目的内容。
根项目下 src 目录中的 Main.java 内容如下:
package gradle.hello;
import gradle.hello.child1.Calculate; // 这是 child1 项目中的类
public class Main {
public static void main(String[] args) {
int result = Calculate.add(1, 2);
System.out.println(result);
}
}
根目录下 settings.gradle 内容如下:
rootProject.name = 'gradle-demo-0003'
include 'child1'
include 'child2'
根目录下 build.gradle 内容如下:
group 'gradle.hello'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
allprojects { // 给根项目和所有的子项目进行配置
apply plugin: 'java'
repositories {
mavenCentral()
}
}
project(":child1") { // 配置子项目 child1
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
}
project(":child2") { // 配置子项目 child2
dependencies {
compile project(":child1") // 依赖子项目 child1
testCompile group: 'junit', name: 'junit', version: '4.12'
}
}
// 配置根项目(rootProject)
dependencies {
compile project(":child1") // 依赖子项目 child1
testCompile group: 'junit', name: 'junit', version: '4.12'
}
运行 Main 类,会输出3。