What is the spring-boot-configuration-processor ? Why do people exclude libraries from it? Why is it invisible in dependency tree?
spring-boot-configuration-processor
is an annotation processor that generates metadata about classes in your application that are annotated with @ConfigurationProperties
. This metadata is used by your IDE (Eclipse, IntelliJ, or NetBeans) to provide auto-completion and documentation for the properties when editing application.properties
and application.yaml
files. You can learn a bit more about it in the relevant section of Spring Boot's reference documentation.
Since Spring Boot 1.5.10, the exclusion is no longer necessary as com.vaadin.external.google:android-json
is no longer a dependency of spring-boot-configuration-processor
.
What does the spring-boot-configuration-processor dependency do?
It scans the libraries in the build and sees what properties they use so as to inform the IDE
Why is it necessary to sometimes exclude dependencies from the processor?
Maven libraries can clash sometimes - the one you reference was excluded by JHipster because it led to errors when on the classpath together with another library in JHipster's dependencies
Why doesn't the processor necessarily appear in the mvn dependency:tree?
It does for me on the jhipster-sample-app
. Presumably you're referring to the comment on the linked issue stating that the android-json
library isn't in the tree. I've asked there about that.
Why are exclusions used with processor in situations where it's very difficult to exclude a dependency?
This is a dependency clash issue like any other really, it just happens that the processor is bringing in the key dependency (or rather was, as @Andy Wilkinson points out com.vaadin.external.google:android-json
is no longer used by the processor)