티스토리 뷰

반응형

Kotlin 기반에 Spring Boot Multi module 구성 하기

이 프로젝트 예제는 Kotlin 기반에 Spring boot 멀티 모듈 프로젝트를 구성합니다. cingration라는 루트 프로젝트를 구성하고 그 아래 api, core(도메인)에 서브 프로젝트를 구성할 것입니다. 또한 이프로젝트에서는 빌드 스크립트로는 Kotlin dsl을 사용할 것입니다.

  • core : 도메인 프로젝트
  • api : api프로젝트

프로젝트 생성

(1) New Project > Gradle > Additional Libraries and Frameworks > Kotlin 선택 > Next

(2) GroupId, ArtifactId 입력 > Next

(3) Use auto-import 체크 해제되어있는지 확인 > Next > Finish

  • 프로젝트 생성시 가끔씪 gradlew가 생성이 안되는데 이건 intellij가 가끔씩 제대로 인식이 안되서 그런것같습니다.

Sub 프로젝트 생성

여기에서는 도메인(core)과 API에대한 두개의 프로젝트를 추가할것 입니다.
(1) File > New > Module

(2) Gradle > Additional Libraries and Frameworks > Kotlin 선택 > Next
(3) Group, Version Inherit 체크 되어있는지 확인 (선택이 안되어있다면 전에 만들었던 루트프로젝트를 클릭 com.wan.multi)

(4) ArtifactId 입력 > Next
(5) Sub Project는 Root Project 바로 아래에 모듈이 생성되어야 함. Content root 경로 잘 확인하기 > Finish

마찬가지로 core프로젝트도 성성해줍니다.

프로젝트 구조

Gradle 셋팅

그다음은 gradle설정을 해줘야한다. 위에서 말한대로 Kotlin dsl을 이용해서 프로젝트들에 gradle을 셋팅하겠습니다.

settings.gradle

include("api", "core")

root build.gradle

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    base
    kotlin("jvm") version "1.3.50" apply false
}

allprojects {
    group = "com.wan.boot"
    version = "1.0-SNAPSHOT"
    repositories {
        mavenCentral()
    }
}

dependencies {
    subprojects.forEach{
        archives(it)
    }
}

sub core(doamin) build.gradle

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("jvm")
}

dependencies {
    implementation(kotlin("stdlib-jdk8"))
}

tasks.withType<KotlinCompile> {
    kotlinOptions.jvmTarget = "1.8"
}

sub api build.gradle

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("jvm")
    kotlin("plugin.spring") version "1.3.50"
    id("org.springframework.boot") version "2.2.0.RELEASE"
    id("io.spring.dependency-management") version "1.0.8.RELEASE"
}

dependencies {

    implementation(project(":core"))
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    testImplementation("org.springframework.boot:spring-boot-starter-test") {
        exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
    }
}
tasks.withType<KotlinCompile> {
    kotlinOptions.jvmTarget = "1.8"
}

모든 소스코드는 깃허브를 이용해 참고하실 수 있습니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함