Что такое процессор конфигурации весенней загрузки? Почему люди исключают из него библиотеки? Почему он не отображается в дереве зависимостей?

Введение

Итак, я заметил следующую строку в файле gradle проекта 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

Мы также использовали ту же конфигурацию в Maven для другого проекта, чтобы решить следующую проблему: Временная зависимость Maven (библиотека / jar vaadin json) не исключается

Вопросы

А теперь у меня следующие вопросы:

  • Что делает зависимость spring-boot-configuration-processor?
  • Почему иногда необходимо исключать зависимости от процессора?
  • Почему процессор не обязательно появляется в дереве зависимостей mvn?
  • Почему исключения используются с процессором в ситуациях, когда очень сложно исключить зависимость?
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
48
0
42 179
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

spring-boot-configuration-processor - это процессор аннотаций, который генерирует метаданные о классах в вашем приложении, которые аннотируются с помощью @ConfigurationProperties. Эти метаданные используются вашей IDE (Eclipse, IntelliJ или NetBeans) для обеспечения автозаполнения и документации для свойств при редактировании файлов application.properties и application.yaml. Вы можете узнать об этом немного больше в соответствующий раздел справочной документации Spring Boot.

Начиная с Spring Boot 1.5.10, в исключении больше нет необходимости, поскольку com.vaadin.external.google:android-json больше не является зависимостью от spring-boot-configuration-processor.

безупречный ответ!

Gaurav 01.11.2020 14:57

What does the spring-boot-configuration-processor dependency do?

Это сканирует библиотеки в сборке и видит, какие свойства они используют, чтобы сообщить IDE

Why is it necessary to sometimes exclude dependencies from the processor?

Библиотеки Maven иногда могут конфликтовать - та, на которую вы ссылаетесь, была исключена JHipster, потому что это приводило к ошибкам, когда на пути к классам вместе с другой библиотекой в ​​зависимостях JHipster

Why doesn't the processor necessarily appear in the mvn dependency:tree?

Для меня это подходит на jhipster-sample-app. Предположительно вы имеете в виду прокомментировать связанную проблему, утверждающий, что библиотеки android-json нет в дереве. Я спросил там об этом.

Why are exclusions used with processor in situations where it's very difficult to exclude a dependency?

Это проблема конфликт зависимостей, как и любая другая, просто так получилось, что процессор вносит ключевую зависимость (или, скорее, так было, поскольку @ Энди Уилкинсон указывает, что com.vaadin.external.google:android-json больше не используется процессором)

Похоже, это зависимость только для разработчиков. если он поддерживает только функции IDE, я должен отметить его «предоставленной» областью? Почему инструмент Spring boot initializr не сделал этого при создании проекта?

rineez 23.11.2021 05:48

Другие вопросы по теме