티스토리 뷰

반응형

 Gradle Multi Module 프로젝트 셋팅 및 빌드

개발 환경

  • SpringBoot 2.4.5
  • Java 1.8
  • Gradle 6.8.3
  • IntelliJ

프로젝트 구성

multi-module-sample
├── multi-core-lib
├── multi-scheduler
├── multi-web
├── gradle
  • multi-module-sample (Root Project)
    • multi-core-lib : scheduler, web에 공통으로 들어갈 라이브러리
    • multi-scheduler : scheduler 서비스 프로젝트
    • multi-web : web 서비스 프로젝트
    • gradle : Root Project gradle

Root Project 및 Sub Project(모듈) 만들기

Root Project 만들기

Gradle 프로젝트 생성
GroupId, ArtifactId 작성
Root Project 생성 완료

Sub Project(모듈) 생성

Root Project - 으론쪽마우스클릭 - New - Module...
Gradle 모듈 생성
Sub Project(모듈) 생성
Sub Project(모듈) 생성 완료.. 나머지 모듈들도 위와 같이 생성하세요
Root Project의 src는 사용을 안하니 삭제해주세요
최종 프로젝트 구성 모습

Root Project 및 Sub Project(모듈) gradle 셋팅

Root Project build.gradle 수정

plugins {
    id 'org.springframework.boot' version '2.4.5'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

subprojects {
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'java'

    group = 'com.sample'
    version = '1.0.0'
    sourceCompatibility = '1.8'

    [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
    tasks.withType(JavaCompile){
        options.encoding = 'UTF-8'
    }

    configurations {
        compileOnly {
            extendsFrom annotationProcessor
        }
    }

    repositories {
        mavenCentral()        
    }    
    //각각의 모듈에 공통으로 들어갈 dependency
    dependencies {
        implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4'
        annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
        testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test'

        compileOnly 'org.projectlombok:lombok'
        annotationProcessor 'org.projectlombok:lombok'
    }

    test {
        useJUnitPlatform()
    }
}
//스케쥴러 모듈에 멀티코어라이브러리를 dependency로 포함
project(':multi-scheduler') {
    dependencies {
        implementation project(':multi-core-lib')
    }
}
//웹 모듈에 멀티코어라이브러리를 dependency로 포함
project(':multi-web') {
    dependencies {
        implementation project(':multi-core-lib')
    }
}

Root Project settings.gradle 수정

rootProject.name = 'multi-module-sample'
include 'multi-core-lib'
include 'multi-web'
include 'multi-scheduler'

각 모듈 build.gradle 수정

multi-core-lib build.gradle 수정

코어라이브러리는 main이 없기 때문에 아래와 같이 bootJar=false, jar=true 로 설정해준다.

bootJar {
    enabled(false)
}
jar {
    enabled(true)
}

dependencies {
    implementation group: 'joda-time', name: 'joda-time', version: '2.9.9'
}

multi-core-scheduler, web build.gradle 수정

//각 모듈에 필요한 dependency를 넣어준다
dependencies {
    implementation group: 'joda-time', name: 'joda-time', version: '2.9.9'
}

Gradle Multi Module 빌드

//메인이 될 모듈명:build
gradle multi-scheduler:build -x test
gradle multi-web:build -x test

 

Links

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함
분류 전체보기 (80)
📺 Develop (0)
🌋 Error Fixed (5)
🏗 Tool (5)
💻 MacBook M1 (15)
📦 ETC (1)

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.