Optional Dependencies

image

가끔 mavenrepository 사이트에서 특정 Dependencies 가 optional 로 표시되는 경우가 있다.

https://mvnrepository.com/artifact/io.vertx/vertx-core/3.4.2

내 프로젝트vertx-corevertx-codegen 이렇게 의존성 관계를 가지고 있을 때

일반적으로는 _의존성 전의_로 인해 내 프로젝트vertx-codegen 라이브러리를 의존하게 되는데

vertx-core 에서 vertx-codgen 라이브러리를 optional 의존성으로 가지게 된다면

내 프로젝트 에서는 vertx-codegen을 의존하지 않게 된다.

https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

Optional dependencies are used when it’s not possible (for whatever reason) to split a project into sub-modules.

(Optional dependencies 는 어떠한 이유에서 프로젝트를 sub module로 분리 할 수 없을 때 사용된다.)

라고 하는데 무슨 말인지 잘 모르겠다.

아무튼 vertx-core의 pom.xml 을 보면 빌드 시 vertx-codegen을 이용하여 코드를 생성하고 그 이후에는 사용되지 않기 때문에

굳이 내 프로젝트 에서 vertx-codegen을 사용할 이유가 없기 때문에 optional 옵션을 건 것이 아닐까 생각된다.

이걸 찾아보게 된 이유는 vertx-core 코드를 살펴보던중 vertx-codegen 을 통해 만들어진 일부 코드들에 대해서

IDE는 알 수 없다고 빨간색으로 표기되어 그 원인을 찾던 중 여기까지 온 것 같다.