개발자의 오르막
[SpringBoot] 멀티모듈 프로젝트 생성 본문
# 멀티모듈 프로젝트 생성
1. File → New Project → Gradle, Java SDK 11 을 선택하고 Next 를 누른다.
2. 프로젝트 이름과 저장 위치, 그룹 ID를 설정해준다.
* GroupId 란 프로젝트를 생성하는 주체, 회사 이름을 의미한다.
* AritifactId 란 프로젝트의 의미를 의미한다.
3. 모듈 생성하기 ( 프로젝트 선택 → new → Module ) 위와 같은 방법으로 모듈 생성
4. 아래와 같은 메뉴트리가 완성됩니다. ( gradle module 3개 )
5. settings.gradle 에서 아래와 같이 rootProject.name 과 include 가 명시되어 있는지 확인합니다.
rootProject.name = 'challenge-study'
include 'module-admin', 'module-web', 'module-core'
6. challenge-study 의 build.gradle 에서 전체 프로젝트에 적용될 스프링 디펜던시를 정의합니다.
plugins {
id 'org.springframework.boot' version '2.1.8.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id "org.sonarqube" version "2.7.1"
id 'java'
}
ext["hibernate.version"] = "5.4.5.Final"
allprojects {
repositories {
mavenCentral()
maven {
url 'https://repo.spring.io/libs-milestone'
}
}
}
7. 이후 각각 서브 프로젝트에 사용할 디펜던시를 정의합니다.
plugins {
id 'org.springframework.boot' version '2.1.8.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id "org.sonarqube" version "2.7.1"
id 'java'
}
ext["hibernate.version"] = "5.4.5.Final"
allprojects {
repositories {
mavenCentral()
maven {
url 'https://repo.spring.io/libs-milestone'
}
}
}
subprojects {
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'org.springframework.boot'
group 'com.gig'
sourceCompatibility = JavaVersion.VERSION_11
dependencies {
compileOnly('org.projectlombok:lombok')
compile('org.springframework.boot:spring-boot-starter-jdbc')
testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile('org.springframework.boot:spring-boot-starter-test')
runtime('mysql:mysql-connector-java')
runtime('com.h2database:h2')
}
clean {
delete 'out'
}
}
project(":module-core") {
dependencies {
compile('org.springframework.boot:spring-boot-starter-data-jpa')
}
}
project(':module-web') {
dependencies {
compile project(':module-core')
compile('org.springframework.boot:spring-boot-starter-web')
}
}
project(':module-admin') {
dependencies {
compile project(':module-core')
compile('org.springframework.boot:spring-boot-starter-web')
}
}
8. 아래와 같이 module-admin, module-web 부분에 패키지 및 클래스를 구성해줍니다.
9. 각각 AdminApplication, WebApplication 을 만들어줍니다.
package com.gig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class, args);
}
}
10. 해당 모듈에서 컨트롤러를 만들어보고 각각의 포트에서 들어가 화면이 나오는지 확인합니다.
- Controller 부분
@RestController
public class IndexController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
- yml 부분 (module-admin, module-web 의 포트는 다르게 구성하고, 어플리케이션 동작)
Admin 모듈과 Web 부분의 port 는 다르게 구성해야 한다.
server:
port: 8086
'SpringFrameWork > SpringBoot' 카테고리의 다른 글
스프링부트 JPA 엑셀 데이터 파싱하기 (0) | 2020.10.22 |
---|---|
[#SpringBoot] CascadeType.Remove 와 orphanRemoval 의 차이 (0) | 2020.05.28 |
[#SpringBoot] Jpa 개념 정리 (0) | 2020.05.16 |
[#SpringBoot ] Lombook 어노테이션 정리 (0) | 2020.05.16 |
[Spring Boot] application.yml 설정 방법 (0) | 2020.04.02 |