본문 바로가기
기타

[Gradle 에러] Could not find method compile()

by 동기 2021. 5. 31.
반응형

build.gradle 에 dependency 추가 후 reload시 아래 에러 메시지가 뜨면서 에러가 났다

 

A problem occurred evaluating root project 'proto'.
> Could not find method compile() for arguments [com.google.cloud:google-cloud-dialogflow]
on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

google-cloud-dialogflow 인자의 comiple() 메소드를 찾을수 없다. 라는 내용이었고,

compile 대신 implementation 으로 수정 후 reload하니 정상적으로 빌드 되었다.

 

둘의 차이가 뭔고 하니..

 

둘 다 사용을 위해 컴파일이 요구된다 하지만 compile은 연결된 API 가 프로젝트로부터 노출이 되고

implementation은 노출되지 않는다.

 

Gradle 3.0 부터 의존 라이브러리 수정 시 재빌드가 필요한 라이브러리를 선택적으로 할 수 있도록 compile 대신 api 와 implementation 으로 나눠 필요없는 경우 재빌드 하지 않도록 했다고 한다. 따라서 목적에 맞게 api 또는 implementation으로 작성하는것이 권장되겠다.

 

implementation : 의존 라이브러리 수정시 본 모듈까지만 재빌드

본 모듈을 의존하는 모듈은 해당 라이브러리의 api 를 사용할 수 없음

 

api : 의존 라이브러리 수정시 본 모듈을 의존하는 모듈들도 재빌드

본 모듈을 의존하는 모듈들도 해당 라이브러리의 api 를 사용할 수 있음

 

 

*프로젝트의 Gradle 버전 확인하는 방법

gradle/wrapper/gradle-wrapper.properties 에서 확인 가능하다

반응형

댓글