21.02.04 TIL46 Gradle Could not find method compile() 해결

서태욱·2022년 2월 4일
0

🔎 오늘 배운 것

1. Compile vs Implementation

이동욱님의 도서 "스프링 부트와 AWS로 혼자 구현하는 웹서비스"을 따라 혼자 다시 한번 프로젝트를 구성해 보려 한다.

처음 buile.gradle을 구성하는 내용 중에서 아래와 같이
dependencies를 설정해주어야 했다.

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

그런데 이렇게 하자 아래와 같은 에러가 발생했다.

Could not find method copmpile() for arguments [org.springframework.boot:spring-boot-starter-web] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

검색하니 gradle 4.10 이후 compile, runtime, testCompile, testRuntime이
더 이상 사용되지 않고, implementation 으로 대체 되었다고 한다.

compile은 상위 모듈까지 전부 불러오기 때문에 속도가 느린 반면, implementation은
지정한 모듈만 불러와 속도가 더 빠르다고 한다. 또한 compile은 연결된 API가 노출되지만 implementation은 그렇지 않아 더 안전해 compile은 이제 deprecate된 것인 듯 하다.

한편, 모듈을 전부 불러와야 할 필요가 있을 경우에는 api를 사용한다고 하긴 하던데,
일반적인 경우라면 implementation으로 충분하다고 한다.

2. deprecated "jcenter"

책에는 repositories에 라이브러리 업로드 난이도 때문에 기존mavenCentral외에 jcenter를 많이 사용한다고 나와있었다. 그런데
막상 적용하니까 실선으로 중간선이 그어졌다.

찾아보니 2021년 5월 1일 jcenter가 중단되었다고 한다.
그래서 더 찾아보니 그냥 mavenCentral로도 일단 진행이 가능한 듯 하여
jcenter는 삭제해주었다.

❗️ 느낀 점

  • 확실히 개발 분야는 매순간 업데이트를 해야 하는 것 같다. 책을 보면서 예제를 따라할 때 라이브러리 지원이 만료되지는 않았는지, 점검해가며 개발을 해 나가야 한다는 점이 오늘의 포인트.

✔️ 참고

profile
re:START

1개의 댓글

comment-user-thumbnail
2022년 2월 5일

크~~ 멋져요!!

답글 달기