๋ชจ๋์ ์ฌ๋ฌ ๊ฐ์ง๋ก ์ ์๋ ์ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ํฐ ์ฒด๊ณ์ ๊ตฌ์ฑ์์์ด๊ณ , ๋ค๋ฅธ ๊ตฌ์ฑ์์์ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ๋๋ ์ฝ๋์ ์ค๋ณต์ด ์๊ธฐ๊ฑฐ๋ ๊ฒน์น๋ ๋ถ๋ถ์ด ์๊ฒผ์ ๋๋ค.
rootProject.name = 'multi-module-project'
include 'multi-module-database'
include 'multi-module-api'
include 'multi-module-batch'
rootProject
์ ๊ทธ ํ์ ํ๋ก์ ํธ๋ฅผ include
ํด์ค๋ค.rootProject
gradle ์ค์ plugins {
id 'java'
id 'org.springframework.boot' version '2.7.9'
}
repositories {
mavenCentral()
}
bootJar.enabled = false
// subprojects๋ settings.gradle์ include๋ ํ๋ก์ ํธ ์ ๋ถ๋ฅผ ๊ด๋ฆฌ
subprojects {
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
// ๊ด๋ฆฌํ๋ ๋ชจ๋์ ๊ณตํต dependencies
dependencies {
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
test {
useJUnitPlatform()
}
}
project(':multi-module-api') { // ์ปดํ์ผ ์ multi-module-database ๋ก๋ฉ
dependencies {
compileOnly project(':multi-module-database')
}
}
project(':multi-module-batch') { // ์ปดํ์ผ ์ multi-module-database ๋ก๋ฉ
dependencies {
compileOnly project(':multi-module-database')
}
}
project(':multi-module-database') {
// multi-module-databse๋ bootJar๋ก ํจํค์ง ํ ํ์ ์์
bootJar { enabled = false }
jar { enabled = true }
}
rootProject
์ ๊ทธ ํ์์ ์๋ multi-module-database
๋ jar
ํ์ผ์ ์์ฑํ ํ์๊ฐ ์๋ค.subprojects
์ project()
๋ค.subprojects
๋ settings.gradle
์ include
๋ ํ๋ก์ ํธ ์ ๋ถ๋ฅผ ๊ด๋ฆฌproject
์ ๊ฒฝ์ฐ ํ์ ํ๋ก์ ํธ๊ฐ์ ์์กด์ฑ์ ๊ด๋ฆฌmodule-api
์ module-web
์ ๋ชจ๋ module-common
์ ์์กดํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ฑ๋ก์ด์ ์ ์ถ๊ฐํ๋ multi-module-database
์ ๋ํ ์์กด์ฑ์ด multi-module-api
์ multi-module-batch
์ ์ ์ฃผ์
๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
//multi-module-api
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation project(':multi-module-database')
}
//multi-module-batch
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-batch'
testImplementation 'org.springframework.batch:spring-batch-test'
implementation project(':multi-module-database')
}
//multi-module-database
dependencies {
runtimeOnly 'com.h2database:h2'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
multi-module-api
์ ์กด์ฌํ๋ค.multi-module-database
์ ์กด์ฌํ๋ค../gradlew :moduleName:build
์ ํตํด ๋น๋๋ฅผ ์ฝ๊ฒ ์งํํ ์ ์๋ค.๐ก์ฐธ๊ณ ์๋ฃ๐ก
https://tecoble.techcourse.co.kr/post/2021-09-06-multi-module/
https://techblog.woowahan.com/2637/
https://jojoldu.tistory.com/123
https://dkswnkk.tistory.com/691