sample repository to use gradle multi-project.
There are 3 sub pjojects.
- common: utility library
- base: base class or interface
- app: application requires base or common
$ tree common/ base/ app/
common/
โโโ build.gradle
โโโ src
โโโ main
ย ย โโโ java
ย ย ย ย โโโ common
ย ย ย ย โโโ MyLibrary.java
base/
โโโ build.gradle
โโโ src
โโโ main
ย ย โโโ java
ย ย โโโ base
ย ย โโโ MyBase.java
ย ย โโโ MyInterface.java
app/
โโโ build.gradle
โโโ src
โโโ main
โโโ java
โโโ app
โโโ Main.java
โโโ MyApp.javaBuild all sub projects.
$ ./gradlew buildBuild common project only.
$ ./gradlew :common:buildBuild a specific task in a sub project. For example app project has a task to build a Fat jar.
$ ./gradlew :app:customFatJar
$ java -jar app/build/libs/executable-1.0.jar
17:20:42.309 [main] INFO base.MyBase - called doSomeProcess in Base
17:20:42.310 [main] INFO common.MyLibrary - do some process
17:20:42.311 [main] INFO base.MyBase - log floor: 3
17:20:42.316 [main] INFO base.MyBase - f.getCumPct('Z'): 0.5Run test for all sub projects.
$ ./gradlew --info cleanTest test