什么是弹簧启动配置处理器?为什么人们将图书馆排除在外?为什么它在依赖关系树中不可见?介绍问题

2022-08-31 16:23:58

介绍

所以我注意到jhipster项目的gradle文件中的以下行:

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暂时性依赖关系(library/jar vaadin json)未被排除

问题

现在我有以下问题:

  • 弹簧启动配置处理器依赖关系有什么作用?
  • 为什么有时有必要从处理器中排除依赖项?
  • 为什么处理器不一定出现在 mvn 依赖关系树中?
  • 为什么在很难排除依赖项的情况下,将排除与处理器一起使用?

答案 1

spring-boot-configuration-processor是一个注释处理器,用于生成有关应用程序中使用 批注的类的元数据。IDE(Eclipse、IntelliJ 或 NetBeans)使用此元数据在编辑和文件时为属性提供自动完成和文档。您可以在Spring Boot参考文档的相关部分中了解有关它的更多信息。@ConfigurationPropertiesapplication.propertiesapplication.yaml

从 Spring Boot 1.5.10 开始,不再需要排除,因为不再是 的依赖项。com.vaadin.external.google:android-jsonspring-boot-configuration-processor


答案 2

弹簧启动配置处理器依赖关系有什么作用?

扫描构建中的库,并查看它们使用哪些属性,以便通知 IDE

为什么有时有必要从处理器中排除依赖项?

Maven 库有时会发生冲突 - 您引用的库被 JHipster 排除,因为它在类路径上与 JHipster 依赖项中的另一个库一起导致错误

为什么处理器不一定出现在 mvn 依赖项:树中?

它确实为我做到了.据推测,您指的是对链接问题的评论,指出库不在树中。我在那里问过这个问题。jhipster-sample-appandroid-json

为什么在很难排除依赖项的情况下,将排除与处理器一起使用?

这是一个依赖冲突问题,就像任何其他问题一样,它只是碰巧处理器引入了关键依赖关系(或者更确切地说,正如@Andy Wilkinson指出的那样,处理器不再使用)com.vaadin.external.google:android-json


推荐