Root project - app moudle - domain module 1) ./gradlew init on root project 2) make app, domain module 3) add include sub module in root's settings.gradle rootProject . name = 'root-modules' include 'app' , 'domain' it means root project manage app, domain module as sub module 4) root's build.gralde subprojects - manage all inculded moudle in setting.gralde 5) add build.gralde to each module 6) app module add domail module as sub module dependencies { compile project( ':domain' ) } 7) add dependencies to each module 8) add each moudle when project build make each moudle in jar file when gradle build - app module bootJar { archiveFileName = 'app.jar' enabled = true } - domain module bootJar { enabled = false } jar { enabled = true } dependencies - compile - implementation - api - runtime - testComplie - References https://jojoldu.tistory.com/123