더북(TheBook)

5.2.2 의존성 리포지토리 추가하기

기본적으로 @Grab 애너테이션으로 선언된 의존성은 메이븐 센트럴 리포지토리(http://repo1.maven.org/maven2/)에서 가져온다. 또 스프링 부트는 스프링 프로젝트의 프리릴리스 의존성을 가져올 수 있도록 스프링의 마일스톤과 스냅샷 리포지토리를 등록한다. 프로젝트 대부분은 이 구성만으로도 충분하다. 하지만 프로젝트에 메이븐 센트럴이나 스프링 리포지토리에 없는 라이브러리가 필요하면 어떻게 해야 할까? 또는 회사 방화벽 안에서 작업하고 있거나 내부 리포지토리를 사용해야 한다면 어떻게 해야 할까?

이런 문제 역시 쉽게 해결할 수 있다. @GrabResolver 애너테이션으로 의존성을 가져올 추가 리포지토리를 지정하면 된다.

예를 들어 최신 하이버네이트 릴리스를 사용한다고 하자. 최신 하이버네이트 릴리스는 JBoss 리포지토리에만 있으므로 @GrabResolver 애너테이션으로 JBoss 리포지토리를 추가해야 한다.


@GrabResolver(name='jboss',
              root='https://repository.jboss.org/nexus/content/groups/public-jboss')

여기서 리졸버의 name 속성은 'jboss'다. 리포지토리의 URL은 root 속성으로 지정한다.

지금까지 스프링 부트 CLI가 어떻게 코드를 컴파일하고, 사용하는 주요 의존성을 어떻게 자동으로 해석하는지 알아보았다. CLI가 자동으로 해결하지 못하는 의존성을 해결하는 @Grab 애너테이션을 지원하므로 전통적인 자바 애플리케이션에서 요구하는 메이븐이나 그레이들 빌드 명세가 CLI 기반 애플리케이션에서는 필요 없다. 하지만 빌드 프로세스가 의존성을 해결하고 코드만 컴파일하는 것은 아니다. 프로젝트 빌드는 일반적으로 자동화된 테스트도 수행한다. 그렇다면 빌드 명세가 없을 때 테스트는 어떻게 수행할까?

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