build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
compileOnly 'org.projectlombok:lombok'
}
라이브러리 앞에 붙은 keyword들은 각 라이브러리들이 적용될 범위(scope)를 뜻한다.
* 공식 사이트
The Java Library Plugin
The Java Library plugin expands the capabilities of the Java Plugin (java) by providing specific knowledge about Java libraries. In particular, a Java library exposes an API to consumers (i.e., other projects using the Java or the Java Library plugin). All
docs.gradle.org
implementation
: 전 범위(컴파일 + 런타임)에 걸쳐서 적용- A 모듈을 수정하게 되면 이 모듈을 직접 의존하는 모듈만 recompile 된다.
testImplementation
: 테스트 시(컴파일 + 런타임)에만 적용debugImplementation
: 디버그 모드에서만 적용androidTestImplementation
: 안드로이드 테스트가 수행될 떄만 적용compileOnly
: 컴파일 시 적용runtimeOnly
: 런타임 시 적용testRuntimeOnly
: 테스트 런타임에 적용annotationProcessor
: 어노테이션 프로세서 사용하는 라이브러리인 경우 적용, 컴파일에만 적용
- Gradle 6.xx부터 "annotationProcessor"을 사용하면 별다른 설정을 하지 않아도 gradle 자체에서 적절한 AnnotationProcessor를 선택하여 사용한다.
deperecated
compile
: 모든 모듈을 재빌드- compile 은 implementation 보다 더 많은 라이브러리를 빌드한다.
- A모듈을 수정하게 되면 A를 의존하는 모든 모듈이 재빌드한다. (시간이 오래걸린다)
api
: 해당 모듈이랑 관계있는 모듈 재빌드- api로 추가한 라이브러리에서 의존하고 있는 라이브러리에 의존하고자 할 때 사용 (컴파일 + 런타임)
- a가 b 라이브러리를 api로 추가하면 a는 b에서 사용 중인 라이브러리 c를 사용할 수 있다.
- 이 방법은 조심해야 하는데 b에서 사용하고 있는 라이브러리 c를 d로 바꾼다면? a가 사용하는 c가 사라졌기 때문에 문제가 발생할 수도 있다.
- 현재 시점 아직 deperecated 되지 않았으나, 사용을 권장하지 않는다
- api로 추가한 라이브러리에서 의존하고 있는 라이브러리에 의존하고자 할 때 사용 (컴파일 + 런타임)
참고
[Gradle] build.gradle의 dependencies 블록 한 번에 정리하기. implementation, testImplementaion의 차이와 라이브
dependencies 블록이란? dependencies 블록은 프로젝트를 구성하기 위해 받아와야 할 라이브러리를 정의해놓는 공간이다. dependencies 블록에는 보통 다음과 같은 문법이 들어간다. dependencies { implementation(
kotlinworld.com
build.gradle에서 runtimeOnly 단어 - 인프런
build.gradle파일에서 h2데이터 베이스 관련 라이브러리 추가하실때 아래와 같은 코드를 사용했습니다. maven repository에 들어가면 testCompile쓰던데 runtimeOnly로 쓰셨던것은 어떤 이유인가요? dependencies{
www.inflearn.com
[Gradle] implementation과 api, compile의 차이는 무엇인가?
implementation과 api, compile build.gradle에서 사용하는 implementation과 api는 모두 라이브러리를 적용시키는 키워드이다. 오래된 Gradle 버전에는 implementation이 없어서 compile을 사용했고, 새로운 버전(6.x 이
kotlinworld.com
https://cantcoding.tistory.com/59
Gradle 의존성 옵션 정리(Compile VS implementation,옵션)
Gradle 이란? 그래들(이하 Gradle)은 그루비(Groovy)를 기반으로 한 빌드 도구. Ant와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스로 공개된 빌드 도구. 처음 Sprin
cantcoding.tistory.com
https://velog.io/@kanamycine/build.gradle%EA%B3%BC-Dependencies
build.gradle과 Dependencies
저번 포스팅에서 다루었던 Gradle에 이어서 우아한 테크코스 (pre) 과정 중 의문점이 들었던 부분에 대한 포스팅을 진행합니다. gradle에 있는 build.gradle 파일이 어떤 역할을 하는 지와, dependencies 프
velog.io
'기타' 카테고리의 다른 글
모놀리식 아키텍처(MA) vs 마이크로서비스 아키텍처(MSA) (2) | 2024.05.16 |
---|---|
[AWS] IAM (Identity and Access Management) (0) | 2024.05.10 |
[페어 프로그래밍] 선택 정렬(Selection Sort) 구현하기 (0) | 2024.04.29 |
[방법론] 폭포수 vs 애자일 (0) | 2024.04.15 |
[페어 프로그래밍] 버블 정렬(Bubble Sort) 구현하기 (0) | 2024.04.05 |