[프로젝트 셋업] 새로운 모듈 추가하기

김대니·2022년 11월 19일
0
post-thumbnail

디렉토리 구성

디렉토리 생성으로 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 를 해봅니다.

제대로 설정했다면 파란색 박스가 디렉토리 옆에 표시됩니다.

rootbuild.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

아래 사진처럼 추가할 수 있습니다.

참고

profile
?=!, 물음표를 느낌표로

0개의 댓글