티스토리 뷰
코틀린으로 에이전트를 생성하면서
의존성 설정에 애를 먹어 작성해본다.
1.
plugins {
id("org.springframework.boot") version "2.7.13"
id("io.spring.dependency-management") version "1.0.15.RELEASE"
kotlin("jvm") version "1.6.21"
kotlin("plugin.spring") version "1.6.21"
}
현재 사용중인 spring-boot버전, jvm버전을 설정
2.
springBoot {
mainClass.set("com.example.test.testApplication")
}
메인 클래스를 지정
3.
java {
sourceCompatibility = JavaVersion.VERSION_17
}
설치되어있는 자바 버전 설정
4.
configurations {
compileOnly {
extendsFrom(configurations.annotationProcessor.get())
}
}
해당 설정을 정확히 파악하지 못해 검색해보았다.
=>
- compileOnly 구성:
- compileOnly 구성은 컴파일 타임에만 필요한 의존성을 정의합니다. 즉, 이 구성에 포함된 라이브러리는 컴파일할 때는 필요하지만, 런타임에는 필요하지 않습니다. 예를 들어, Lombok과 같은 코드 생성 라이브러리들이 이에 해당합니다.
- annotationProcessor 구성:
- annotationProcessor 구성은 주로 애노테이션 프로세서를 포함합니다. 애노테이션 프로세서는 소스 코드를 컴파일할 때 소스 코드에 주석을 처리하여 추가 소스 파일을 생성할 수 있습니다.
- extendsFrom 사용:
- extendsFrom 메서드는 한 구성이 다른 구성으로부터 의존성을 상속받도록 설정합니다.
- 위의 예시에서는 compileOnly 구성이 annotationProcessor 구성으로부터 의존성을 상속받습니다. 이는 annotationProcessor 구성에 정의된 모든 의존성이 compileOnly 구성에도 포함됨을 의미합니다.
결론 : 위 설정은 annotationProcessor에 추가된 모든 애노테이션 프로세서 의존성이 compileOnly 구성에도 적용되도록 하여, 컴파일 타임에 애노테이션 프로세서를 사용할 수 있도록 합니다
5.
sourceSets {
main {
resources {
srcDir("${project.projectDir}/src/main/kotlin")
.exclude("**/*.kt")
}
}
test {
resources {
srcDir("${project.projectDir}/src/test/kotlin")
.exclude("**/*.kt")
}
}
}
sourcesets : Gradle 프로젝트에서 소스코드, 리소스 파일 위치를 정의한다.
직접 실행하는 main과
테스트를 위해 실행하는 test를 포함한다.
=> .kt 파일을 제외하는 이유는 리소스 파일(.properties, xml,json) 등과 같은 파일과 소스파일을 분리하기위함이다.
의존성 파트는 길이가 길어 다음 포스팅에 진행할 예정.
반응형
'Kotlin > 설정' 카테고리의 다른 글
Build.gradle.kts - part2 (0) | 2024.05.29 |
---|