title: What is the spring-boot-configuration-processor ? Why do people exclude libraries from it? Why is it invisible in dependency tree?
body: <h1>Introduction</h1>
  
  <p>So I noticed the following line in the gradle file of the jhipster project:</p>
  
  <pre><code>annotationProcessor ("org.springframework.boot:spring-boot-configuration-processor") {
          exclude group: 'com.vaadin.external.google', module: 'android-json'
      }
  </code></pre>
  
  <p><a href="https://github.com/jhipster/jhipster-sample-app-gradle/blob/9e9c3db8f3bedba4b1efd85ecb6ff3f12a5f596a/build.gradle#L230" rel="noreferrer">https://github.com/jhipster/jhipster-sample-app-gradle/blob/9e9c3db8f3bedba4b1efd85ecb6ff3f12a5f596a/build.gradle#L230</a></p>
  
  <p>We also used the same configuration in Maven for another project to solve the following problem: <a href="https://stackoverflow.com/q/53260385/1688441">Maven transient dependency (library/jar vaadin json) is not being excluded</a></p>
  
  <h1>Questions</h1>
  
  <p>And now I have the following questions:</p>
  
  <ul>
  <li>What does the spring-boot-configuration-processor dependency do?</li>
  <li>Why is it necessary to sometimes exclude dependencies from the processor?</li>
  <li>Why doesn't the processor necessarily appear in the mvn-dependency tree?</li>
  <li>Why are exclusions used with processor in situations where it's very difficult to exclude a dependency?</li>
  </ul>