๋“ค์–ด๊ฐ€๋ฉฐ

  • Gradle๋กœ Multi Module ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉฐ ๊ฒช์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
  • subprojects๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜์œ„ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๋Š”๋ฐ ๋น„์–ด์žˆ๋Š” Directory์—๋„ ์ ์šฉ๋˜์–ด ๋นŒ๋“œ๊ฐ€ ์•ˆ๋˜๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
subprojects {
    /**
     * ๋‚ด๋ถ€์—์„œ plugins ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ์ด์Šˆ
     */
    apply plugin: 'java'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
 
    repositories {
        jcenter()
        mavenCentral()
    }
 
    sourceCompatibility = 1.8
 
    dependencies {
    }
}
  • Multi Module ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
โ”œโ”€โ”€ build.gradle
โ”œโ”€โ”€ module-admin
โ”‚ย ย  โ”œโ”€โ”€ build
โ”‚ย ย  โ”œโ”€โ”€ build.gradle
โ”‚ย ย  โ””โ”€โ”€ src
โ”œโ”€โ”€ module-api
โ”‚ย ย  โ”œโ”€โ”€ build
โ”‚ย ย  โ”œโ”€โ”€ build.gradle
โ”‚ย ย  โ””โ”€โ”€ src
โ”œโ”€โ”€ module-clients <- subprojects์— ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ๊ฐ€ ์ง„ํ–‰๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ
โ”‚ย ย  โ””โ”€โ”€ module-aws-client
โ”‚   โ”‚ย ย  โ”œโ”€โ”€ build
โ”‚   โ”‚ย ย  โ”œโ”€โ”€ build.gradle
โ”‚   โ”‚ย ย  โ””โ”€โ”€ src
โ”œโ”€โ”€ module-common
โ”‚ย ย  โ”œโ”€โ”€ build
โ”‚ย ย  โ”œโ”€โ”€ build.gradle
โ”‚ย ย  โ””โ”€โ”€ src
โ””โ”€โ”€ settings.gradle

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ์ ์ธ ์„ค์ •๊ฐ’์€ ์—†๋Š”๊ฑฐ ๊ฐ™๊ณ  subprojects์„ ํ†ตํ•ด ํŠน์ • ์กฐ๊ฑด์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
def javaProjects() {
  return subprojects.findAll { new File(it.projectDir, "src").exists() }
}
 
configure(javaProjects()) {
  apply plugin: 'java'
}

Reference