Web/📗 Spring

build.gradle dependencies의 compile과 testCompile이 작동하지 않는 문제 [Spring / 트러블 슈팅]

키깡 2022. 7. 7.
728x90

🎈 문제 정의

build.gradle에서 책에서 쓰라는 대로 따라가면

Image

사진과 같이 아예 인식을 못한다.

🔑 원인 추론

  1. jdk 버전 문제라고 생각 (X)
  2. compile 에서 implementation 과 api 로 변경되었다고 함. (O)

compile과 implementation 차이

Image
compile은 연결된 API 모두가 프로젝트에 의해 노출이 되고 implementation은 노출되지 않는다.

  1. api가 노출이 되면, API로직에서 유효성 검사 및 기타 원하지 않는 형태의 데이터가 들어와 보안의 위협이 돼서 골치 아파진다.

A <- B <- C와 같이 B, C가 A라는 모듈을 의존하고 있다고 가정하자.

compile은 A가 수정이 되면, B, C와 같이 의존하고 있는 오브젝트들이 모두 다시 빌드되어야 한다.

  1. 반면 implementation은 A수정 시, 직접 의존하는 B만 다시 빌드를 하기 때문에 속도적인 측면에서 더 유리하다.

그리고 이는 프로젝트의 구조가 복잡할수록, 커질수록 더욱 많은 퍼포먼스상 차이를 보인다.

  1. 게다가 공식문서에서, gradle 3.0 이상부터는 compile을 사용을 권장하지 않는다.

(출처 : https://compogetters.tistory.com/64)

🦾 this is assisted by 관프님😠

🎆 조치 및 방안 검토

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web')
    implementation('org.springframework.boot:spring-boot-starter-test')
}

똑같은 부분을 implementation으로 바꾼다.

👀 결과관찰

빌드쓰가 완료쓰

댓글