什么是spring-boot-configuration-processor?人们为什么将图书馆排除在外?为什么它在依赖树中不可见?

Men*_*los 14 java spring gradle maven spring-boot

介绍

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

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

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

我们还对另一个项目在Maven中使用了相同的配置来解决以下问题:不排除Maven瞬态依赖项(库/ jar vaadin json)

问题

现在我有以下问题:

  • spring-boot-configuration-processor依赖项有什么作用?
  • 为什么有时需要从处理器中排除依赖项?
  • 为什么处理器不一定出现在mvn依赖树中?
  • 为什么在很难排除依赖项的情况下将排除项与处理器一起使用?

And*_*son 18

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

从Spring Boot 1.5.10开始,不再需要排除,也不再com.vaadin.external.google:android-json是的依赖spring-boot-configuration-processor


Rya*_*son 6

spring-boot-configuration-processor依赖项有什么作用?

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

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

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

为什么处理器不一定出现在mvndependency:tree中?

它对我有用jhipster-sample-app。大概是指链接问题注释,指出该android-json库不在树中。我问过那件事。

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

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

  • 这听起来像是一个仅限开发的依赖项。如果它仅支持 IDE 功能,我应该将其标记为“提供”范围吗?为什么 Spring Boot Initializr 工具在生成项目时没有这样做? (9认同)