이 글은 "스프링 부트와 AWS로 혼자 구현하는 웹 서비스" 책 구현 중 발생한 문제입니다.
책의 예제를 따라하기 위해 Spring Data Jpa와 H2를 아래와 같이 build.gradle에 추가하고 build를 하니 Error가 발생하였다.
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('com.h2database:h2')
이에 원인을 찾아보니 StackOverflow에서 해결법을 찾을 수 있었다.
원인은 아래 사진과 같이 compile, runtime, testCompile, testRuntime이 Gradle 4.10버전 부터 쓰이지 않게 되었고, Gradle 7.0 버전부터는 아예 삭제되어 각각 implementation, runtimeOnly, testImplementation, testRuntimeOnly로 대체 되었다고 한다. 실제로 내 프로젝트의 gradle 버전을 확인해보니 7.5 버전이었다.
gradle/gradle-wrapper.properties
distributionUrl= ···/gradle-7.5-bin.zip
이전부터 gradle에서 라이브러리를 가져올 때 적용되는 범위로 인해 api 혹은 compile을 권장하지 않았던게 7.0 버전부터는 삭제된 모양이다. 해당 내용에 대해 궁금하면 다른 게시글인 woojing의 implementation과 compile의 차이를 보길 바란다.
위 글에 맞춰 build.gradle에서 compile을 implementation으로 변경 후 build하니 잘 작동하였다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'com.h2database:h2'