디렉토리 생성으로 apps
> app-api
를 생성합니다.
디렉토리를 프로젝트 모듈로 구성하기 위해서는 프로젝트 최상단에 있는 settings.gradle
파일을 수정해야 합니다.
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
maven {
url = uri("https://maven.springframework.org/release")
}
maven {
url = uri("https://maven.restlet.com")
}
}
}
rootProject.name = "sample-project"
include("apps:app-api") // 방금 생성한 `apps:app-api` 디렉토리를 추가해줍니다.
여기까지 설정하고 gradle sync
를 해봅니다.
제대로 설정했다면 파란색 박스가 디렉토리 옆에 표시됩니다.
root
의 build.gradle
수정apps:app-api
모듈에 소스코드를 작성하기 전에 프로젝트 최상단의 build.gradle 파일을 수정해야 합니다.
plugins {
id("io.spring.dependency-management") version "1.0.11.RELEASE" apply false // ... (1)
id("org.springframework.boot") version "2.7.3" apply false
id("io.freefair.lombok") version "6.4.1" apply false // ... (2)
kotlin("jvm") version "1.6.21" apply false
kotlin("kapt") version "1.6.21" apply false
kotlin("plugin.spring") version "1.6.21" apply false
}
// 프로젝트 내 전체 모듈에 적용
allprojects {
group = "sample.project.kdohyeon"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
maven {
url = uri("https://maven.restlet.com")
}
maven {
url = uri("https://jitpack.io")
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions.jvmTarget = "17"
kotlinOptions.freeCompilerArgs = listOf(
"-Xjsr305=strict",
"-Xjvm-default=all",
)
}
}
subprojects {
apply(plugin = "idea")
}
project(":apps:app-api") { // ... (3)
apply(plugin = "org.gradle.java")
apply(plugin = "io.spring.dependency-management")
apply(plugin = "io.freefair.lombok")
apply(plugin = "org.jetbrains.kotlin.jvm")
the<io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension>().apply {
imports {
mavenBom("org.springframework.boot:spring-boot-dependencies:2.7.3")
mavenBom("org.jetbrains.kotlin:kotlin-bom:1.6.21")
mavenBom("org.jetbrains.kotlinx:kotlinx-serialization-bom:1.4.1")
}
dependencies {
dependency("org.apache.commons:commons-lang3:3.12.0")
dependency("org.apache.commons:commons-collections4:4.4")
dependency("commons-io:commons-io:2.11.0")
}
}
dependencies {
val implementation by configurations
implementation("org.springframework.boot:spring-boot-starter-web")
}
}
여기까지하고 다시 gradle sync
를 합니다.
(1) Gradle 의 plugin 은 apply 를 할 때의 모든 작업들을 진행합니다. apply false 옵션은 나중에 apply 가 됩니다.
(2) Lombok 플러그인
(3) apps:app-api
모듈에 대한 라이브러리 의존성 설정
src/main
, src/test
모듈 추가소스코드를 작성하기 위해서 똑같이 디렉토리 생성을 클릭합니다.
apps:app-api
모듈의 빌드 스크립트가 잘 적용되어 있다면 아래처럼 Gradle Source Sets
가 제안하는 모듈이 추천됩니다.
아래 4 모듈을 추가해봅니다.
src/main/kotlin
src/main/resources
src/test/kotlin
src/test/resources
방금까지의 설명으로 root > apps > app-api 모듈을 추가했습니다.
아래처럼 나머지 모듈도 구성해야 합니다.
각 모듈간 의존성은 프로젝트를 구성하며 설정해보도록 하고 일단 모듈부터 추가해보도록 하겠습니다.
- root
- apps
- app-api
- app-batch
- libs
- adapter-http
- adapter-persistence
- application
- protocols
아래 사진처럼 추가할 수 있습니다.