¿Qué es el procesador de configuración de arranque de resorte? ¿Por qué la gente excluye a las bibliotecas? ¿Por qué es invisible en el árbol de dependencia?

2 minutos de lectura

Introducción

Así que noté la siguiente línea en el archivo gradle del proyecto jhipster:

annotationProcessor ("org.springframework.boot:spring-boot-configuration-processor") {
        exclude group: 'com.vaadin.external.google', module: 'android-json'
    }

https://github.com/jhipster/jhipster-sample-app-gradle/blob/9e9c3db8f3bedba4b1efd85ecb6ff3f12a5f596a/build.gradle#L230

También usamos la misma configuración en Maven para otro proyecto para resolver el siguiente problema: la dependencia transitoria de Maven (biblioteca/jar vaadin json) no se excluye

Preguntas

Y ahora tengo las siguientes preguntas:

  • ¿Qué hace la dependencia spring-boot-configuration-processor?
  • ¿Por qué a veces es necesario excluir dependencias del procesador?
  • ¿Por qué el procesador no aparece necesariamente en el árbol de dependencias de mvn?
  • ¿Por qué se utilizan exclusiones con el procesador en situaciones en las que es muy difícil excluir una dependencia?

avatar de usuario
andy wilkinson

spring-boot-configuration-processor es un procesador de anotaciones que genera metadatos sobre clases en su aplicación que están anotadas con @ConfigurationProperties. Su IDE (Eclipse, IntelliJ o NetBeans) utiliza estos metadatos para proporcionar autocompletado y documentación para las propiedades al editar application.properties y application.yaml archivos Puedes aprender un poco más al respecto en el sección relevante de la documentación de referencia de Spring Boot.

Desde Spring Boot 1.5.10, la exclusión ya no es necesaria como com.vaadin.external.google:android-json ya no es una dependencia de spring-boot-configuration-processor.

  • respuesta impecable!

    – Gaurav

    1 de noviembre de 2020 a las 13:57

avatar de usuario
ryan dawson

¿Qué hace la dependencia spring-boot-configuration-processor?

Eso escanea las bibliotecas en la compilación y ve qué propiedades usan para informar al IDE

¿Por qué a veces es necesario excluir dependencias del procesador?

Las bibliotecas de Maven pueden chocar a veces: JHipster excluyó la que hace referencia porque dio lugar a errores cuando estaba en el classpath junto con otra biblioteca en las dependencias de JHipster

¿Por qué el procesador no aparece necesariamente en la dependencia mvn: árbol?

Lo hace para mí en el jhipster-sample-app. Presumiblemente, se está refiriendo al comentario sobre el problema vinculado que indica que el android-json la biblioteca no está en el árbol. Ahí he preguntado por eso.

¿Por qué se utilizan exclusiones con el procesador en situaciones en las que es muy difícil excluir una dependencia?

Este es un problema de conflicto de dependencia como cualquier otro realmente, simplemente sucede que el procesador está trayendo la dependencia clave (o más bien lo estaba, como señala @Andy Wilkinson com.vaadin.external.google:android-json ya no es utilizado por el procesador)

  • Parece que es una dependencia solo para desarrolladores. si solo es compatible con las funciones IDE, ¿debería marcarlo con el alcance “proporcionado”? ¿Por qué la herramienta spring boot initializr no hizo eso mientras generaba el proyecto?

    – rineez

    23 de noviembre de 2021 a las 4:48


¿Ha sido útil esta solución?