= 스프링 부트 2.1.0 이후 그루비 2.5 적용(groovy-all) 미지원
honeymon, ihoneymon@gmail.com
v0.0.1, 2018-12-03

:spring: 스프링
:sb: {spring} 부트

{sb} 2.1.0 이 되면서 관리하는 groovy 버전이 2.4 에서 link:http://groovy-lang.org/releasenotes/groovy-2.5.html[2.5(http://groovy-lang.org/releasenotes/groovy-2.5.html)]로 변경되었다. 이 과정에서 그루비 자체의 groovy-all 에 대한 정책도 변경되었다.

그루비 2.5 가 되면서 코어 groovy jar 와 여러 개 "모듈" jar로 구성되었다. 그루비의 모듈은 자바 9 이상의 모듈과는 다르다. 모듈 구성이 변경되면서 groovy-all 이라는 편의는 제공하지 않지만 동등한 구성요소를 가져오는 all pom은 제공한다.

**테스트 프레임워크 스폭(Spock)를 사용하기 위해 groovy-all 을 사용**했었다면, 스프링 부트에서는 다음과 같이 모듈을 변경해야 한다.

.2.1.0.RELEASE 이전
[source,groovy]
----
testCompile('org.codehaus.groovy:groovy-all') // <1>
testCompile('org.spockframework:spock-core:1.1-groovy-2.4')
testCompile('org.spockframework:spock-spring:1.1-groovy-2.4')
----
<1> {sb}에서는  `groovy-all` 에 대한 의존성을 관리하지 않는다.

.2.1.0.RELEASE 이후 - groovy-all 버전 명시
[source,groovy]
----
testCompile('org.codehaus.groovy:groovy-all:3.0.0-alpha-3') // <1>
testCompile('org.spockframework:spock-core:1.1-groovy-2.4')
testCompile('org.spockframework:spock-spring:1.1-groovy-2.4')
----
<1> 3.0.0 이상을 사용해야 할 것으로 보인다.

{sb} 2.1.0 이후로 ``groovy-all``에 대한 버전을 명시하지 않으면 다음과 같은 오류를 접하게 될 것이다.

[source,console]
----
FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all files for configuration ':boot-spring-boot:compileClasspath'.
> Could not find org.codehaus.groovy:groovy-all:. // <1>
----
<1> {sb} 2.1.0 부터는 groovy-all 버전을 관리하지 않는다.


.2.1.0.RELEASE 이상
[source,groovy]
----
testCompile('org.codehaus.groovy:groovy')   // <1>
testCompile('org.codehaus.groovy:groovy-test') // <1>
testCompile('org.spockframework:spock-core:1.2-groovy-2.5')
testCompile('org.spockframework:spock-spring:1.2-groovy-2.5')
----
<1> `groovy`, `groovy-test` 를 선언하다.

[NOTE]
====
라이브러리들이 java 9 이상하게 되면서 패키지 관리정책에 모듈화를 반영하는 추세인 듯 하다. @_@);;
====