더북(TheBook)

2.2 스타터 의존성 사용하기

 

잠시 스타터 의존성이 없었던 때를 떠올려 보자. 스프링 부트 스타터 의존성의 장점을 바로 알 수 있을 것이다. 스프링 부트 없이 빌드하려면 어떤 의존성을 추가해야 할까? 스프링 MVC를 지원하려면 어떤 스프링 의존성들이 필요할까? Thymeleaf의 그룹 ID와 아티팩트 ID는 기억나는가? 스프링 데이터 JPA의 어떤 버전을 사용해야 할까? 이 모든 의존성은 서로 잘 호환이 될까?

이런! 스프링 부트 스타터 의존성이 없으면 해야 할 일이 꽤 많다. 그저 Thymeleaf 뷰와 이 뷰의 데이터를 JPA로 저장하는 스프링 웹 애플리케이션을 개발하고 싶을 뿐이다. 하지만 코드 첫 줄을 작성하기도 전에 빌드 명세에 어떤 것을 추가하여 기능을 만들어야 할지를 고민해야 한다.

많은 고심 끝에 (아마도 여러분은 비슷한 의존성이 있는 다른 애플리케이션의 빌드에서 의존성들을 복사하여 붙여 넣어야 했을 것이다) 그레이들 빌드 명세에 다음 의존성을 추가했다고 가정하자.


compile('org.springframework:spring-web:4.1.6.RELEASE')
compile('org.thymeleaf:thymeleaf-spring4:2.1.4.RELEASE')
compile('org.springframework.data:spring-data-jpa:1.8.0.RELEASE')
compile('org.hibernate:hibernate-entitymanager:jar:4.3.8.Final')
compile('com.h2database:h2:1.4.187')

이 의존성 목록은 문제가 없어 보이고, 잘 작동할 것 같다. 하지만 그것을 어떻게 알 수 있을까? 선택한 의존성 버전끼리 서로 잘 호환되는지 어떻게 장담할 수 있을까? 물론 그럴 수도 있지만, 애플리케이션을 빌드하고 실행하기 전까지는 확실히 알 수 없을 것이다. 또 이 의존성 목록이 완전한지는 어떻게 알 수 있을까? 아직 코드 한 줄도 작성하지 않았는데 빌드까지 갈 길이 참 멀다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.