【问题标题】:Use of spring-boot-starter jars triggers lint warnings使用 spring-boot-starter jar 会触发 lint 警告
【发布时间】:2022-01-10 01:27:09
【问题描述】:

我有一个 springboot 项目,我们通过使用各种适当的 spring-boot-starter jar 来引入我们需要的适当的传递依赖项,从而快速进行。现在,随着我们接近生产发布,我们正在添加代码质量和代码检查工具以收紧松散的末端。其中一些将启动器 jar 标记为有问题,但我发现关于如何处理问题的建议不一致。

Spring.io 文档未能对此进行权衡。此处描述了启动器:Spring Starters,但实际上只是说它们用于“快速启动”,但并不表示它们旨在用于生产。启动器未列在“生产就绪”功能(专注于执行器)中。 Packaging for Production 没有提到首发。仅从 Spring 文档中,我们就鼓励您使用启动器(以便快速上手),但不会被告知在生产环境中使用它们。

如果 spring 项目添加了gradle-lint plugin,或者使用了maven-dependency-plugin,则使用启动器标记问题。启动器本身不包含任何代码,但它们引入了有用的传递依赖项(通过设计),但这与 lint 插件相反。相关incident here

来自gradle-lint 通常,应用程序仅使用此类系列中包含的库的子集。该系列中包含的不必要的依赖项都增加了应用程序本身的占用空间。如果“应用程序”本身就是一个库,那么这些不必要的依赖项会向下游泄露给用户,从而增加他们的足迹并可能引入破坏性的版本冲突解决问题。

在上线之前删除启动器罐子是“正确”的答案吗?是否应该在生产中使用启动器?我确信有很多项目已经开始生产,而且可能他们已经成功地做到了。但在我看来,当局在做什么方面存在分歧,因此希望调和它们。

【问题讨论】:

    标签: spring-boot gradle lint maven-dependency-plugin


    【解决方案1】:

    我认为这很可能会被关闭,因为它是基于意见的。作为 Spring Boot 团队的一员,starters 绝对是为在生产环境中使用而设计的。如果它在以后创造更多的工作,那么让你快速前进的东西是没有意义的。有些人不喜欢间接依赖传递依赖,并认为您需要的所有依赖都应该直接声明。我认为您提到的 linting 工具正在执行这一观点。您可以配置该工具以使其安静,也可以手动声明启动器的依赖项。我会做前者。

    【讨论】:

      猜你喜欢
      • 2019-10-28
      • 2014-04-07
      • 2016-01-29
      • 1970-01-01
      • 2015-07-07
      • 2023-04-04
      • 2019-12-11
      • 2018-09-27
      • 2018-08-24
      相关资源
      最近更新 更多