라이브러리도 다시 재다운로드를 받고, 다 확인해봐도 잘못된 것이 없어보이는데 계속 arguments를 찾을 수 없다는 에러가 떴다. 원인은 gradle7 버전에 compile을 사용하는 경우 나타나는 오류라고 한다.
간단한 해결 방법이 있다.
이렇게 compile대신 implementation을 써주면 된다. Gradle3.0 이상부터는 compile을 더 이상 지원하지(deprecated) 않는다고 한다. 그래서 구글링한 소스 코드를 참고하더라도 compile, testComplie 대신 implementataion, testImplementation을 써주어야한다.(debug,andorid도 마찬가지)
여기서 궁금증, 그렇다면 compile과 implementation의 차이점은 무엇일까?
왜 달라지게 되는 건지 알아보자.
1.Compile(API)
컴파일의 경우 A의 파일에 변경이 있다면 의존상태에 있는 B, C를 모두 리빌드해주는 것이고
2.Implementation
implemetation은 A파일에 변경이 있다면 직접적인 의존관계에 있는 B만을 리빌드해주는 것이라고 한다.
-> 결론: implementation을 쓰는게 의존성도 떨어지고 리빌드를 많이 하지않아도 되니 속도가 빨라진다! 또한 compile은 위의 API를 리빌드하는 과정에서 사용자에게 다 API를 노출시키는데 implementation은 필요한 API만이 노출되기에 프로그램 투명성이 좀 더 보장된다고 볼 수 있다.
참고사이트:
반응형
'JAVA > Spring' 카테고리의 다른 글
[Spring] 갑자기 annotation이 안먹는 문제 (0) | 2022.07.07 |
---|---|
[타임리프] Property or field '~' cannot be found on null 해결방법 (0) | 2022.07.01 |
[Thymeleaf] 타임리프 시작하기!(+jsp대신 thymeleaf로 view처리!) (0) | 2021.10.24 |
Spring boot로 migration하기 전 고려해볼 것들?(+스프링부트 개념정리) (0) | 2021.10.18 |
[Spring] Spring Bean이란?(+bean을 등록하는 방법) (0) | 2021.10.18 |