= [spring-boot] 2.X bootJar.enable=false
honeymon, <ihoneymon@gmail.com>
v0.0.1, 2018/07/02

멀티 모듈을 가지는 스프링 부트 기반의 멀티프로젝트를 구성하는 과정에서 조금 당황스런 상황을 겪었다.

[source,groovy]
----
bootJar.enabled=false
----

빌드 했을 때 위처럼 선언된 공통 모듈이 빌드된 배포본에 포함되지 않는 상황이 발생했다.

[NOTE]
====
인텔리제이에서 테스트 러너를 그레이들로 설정하지 않으면 당황스런 순간을 맞이하게 된다. 

인텔리제이 기본 테스트 러너에서는 인텔리제이에서 컴파일한 ``build`` 디렉터리를 기반으로 테스트를 진행해서 별다른 문제가 없지만 그레이들 빌드 테스트의 경우에는 컴파일 및 빌드를 하면서 테스트가 진행되는데 위에서 언급한 ``bootJar.enabled=false``만 선언된 모듈은 jar 파일을 생성하지 않기 때문에 이를 참조하는 하위 모듈에서 관련된 파일을 읽어오지 못하게 된다.
====

이와 관련된 문제를 찾아보다가 발견한 한줄기 빛!

* link:https://github.com/spring-projects/spring-boot/issues/10238[Spring Boot Gradle plugin: bootJar.enabled=false not working ]

마지막 댓글을 보면

[source,groovy]
----
bootJar.enabled=false
jar.enabled=true
----

``jar.enabled=true`` 옵션을 추가하면 Jar 파일 생성이 진행된다. 우후!

스프링 부트에서 ``bootRepackage`` 에서 ``bootJar`` 로 변경되면서 뭔가 이상한 짓을 한 듯 하다.

[NOTE]
====
link:https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/gradle-plugin/api/org/springframework/boot/gradle/tasks/bundling/BootJar.html[BootJar] 문서를 살펴보면 확장하면서 재정의한 영향으로 보인다. ``jar.enabled`` 옵션을 활성화한다.
====
