spring boot 프로젝트 생성
intellij 에서 하든 spring 에서 하든.. 편한 방법으로 프로젝트를 생성한다
혹시 모르는 사람을 위하여 링크를 남겨둠
spring Initializr : https://start.spring.io/
프로젝트 구조 수정
우선 root 경로의 src 폴더를 삭제한다
그리고 root 폴더 -> 우클릭 -> new -> Module 을 추가해준다
이때 내가 원하는 모듈갯수만큼 추가하면 된다
module name을 설정해주고
Build System 이 기본적으로 Maven 에 가있을건데 gradle로 해주자
아래 group Id 까지 설정해주면 완료
나는 총 3개의 모듈을 생성하였다
demo-main -> 사용자단 api
demo-admin -> 관리자단 api
demo-core -> 공통 로직
전부 생성하게 되면 이런식의 구조를 확인할 수 있을것이다.
모듈 관계 설정
settings.gradle 설정
root 폴더 경로에 위치한 settings.gradle 에 모듈 설정을 추가해준다
rootProject.name = 'demo'
include 'demo-main', 'demo-admin', 'demo-core'
build.gradle 설정
모듈 별 공통 libraries 들을 설정해주고 각 모듈 별 관계성을 정리해주자
아래 내가 작업한 코드인데 눈여겨볼점은 project 설정부분이다
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.2'
id 'io.spring.dependency-management' version '1.1.4'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
implementation {
extendsFrom annotationProcessor
}
}
subprojects {
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 {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
implementation "org.mariadb.jdbc:mariadb-java-client:2.1.2"
implementation 'org.springframework.boot:spring-boot-starter-validation'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
}
project(':demo-main') {
jar {
archivesBaseName = 'demo-main'
}
dependencies {
//컴파일 시 core 로드
compileOnly project(':demo-core')
}
}
project(':demo-admin') {
jar {
archivesBaseName = 'demo-admin'
}
dependencies {
//컴파일 시 core 로드
compileOnly project(':demo-core')
}
}
project(':demo-core') {
//bootJar로 패키징 할 필요 없음 Main() 메서드 필요없기때문
bootJar { enabled = false }
jar { enabled = true }
}
clean {
delete file('src/main/generated')
}
configurations 에 compileOnly가 꼭 있어야 멀티모듈 dependencies 의 compileOnly 설정을 사용할 수 있다
subprojects {
apply plugin: 'java'
apply plugin: 'java-library'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
}
개별 모듈 build.gradle 설정
공통로직 모듈을 제외한 다른 모듈의 경우 아래와 같이 작성하면 된다
dependencies 에 core 모듈을 implementation 에 추가한다
plugins {
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
implementation project(':demo-core')
testImplementation platform('org.junit:junit-bom:5.9.1')
testImplementation 'org.junit.jupiter:junit-jupiter'
}
test {
useJUnitPlatform()
}
core 모듈은 build.gradle 없애놓고 저장!
여기까지하면 모듈간 관계설정 세팅이 완료되었다.
다음 포스팅에서 실제로 활용해보자
'BackEnd > JAVA' 카테고리의 다른 글
Spring boot Multi module Project (2) - 프로젝트 실행 (1) | 2024.01.22 |
---|---|
@Component, @Configuration, @Bean (1) | 2024.01.02 |
@RequestParam, @RequestBody, @ResponseBody (0) | 2024.01.01 |
@Controller, @RestController (0) | 2023.12.31 |
@MappedSuperClass @inherited @Embadded 상속정리 (0) | 2023.02.11 |