当前位置: 首页 > news >正文

maven的optional和scope使用场景

1. optional 属性

可选值:

  • false(默认):依赖会传递

  • true:依赖不会传递

含义: 控制依赖是否会被传递到引用当前项目的其他项目中。

<optional>true</optional> 使用范围

场景 示例依赖 是否建议 optional 理由
核心工具(人人需要) jackson-databindslf4j-apicommons-lang3 不设 optional,避免所有使用者再手动声明
大体积可选功能 easyexcelpoi-ooxmlitext7-core 体积大、易冲突;仅部分用户需要
缓存/消息中间件 spring-boot-starter-redisspring-kafka 与业务场景绑定;非全局必需
数据源/连接池 druid-spring-boot-starterhikaricp 用户可能已有 preferred 实现
云厂商 SDK aliyun-oss-spring-boot-starteraws-java-sdk-s3 强耦合具体云产品;用户按需
序列化扩展 protobuf-javaavrokryo 多种实现可选,防止强制绑定
日志实现 logback-classiclog4j-slf4j-impl 应由最终应用决定具体实现
测试/开发工具 junitmockitospring-boot-devtools ❌(scope=test 即可) 测试范围天然不传递,无需 optional
多模块项目内部 子模块间依赖 内部模块明确需要,optional 会增加复杂度
独立 starter my-xx-spring-boot-starter ✅(内部 optional) starter 本身已聚合,内部功能依赖可 optional,实现“按需激活”

口诀:“核心不 optional,可选必 optional”
既不让使用者骂娘,也不污染他们的依赖树。

scope使用场景

场景 依赖 推荐 scope 理由
业务代码用 Jackson jackson-databind compile 编译、运行、打包都要
写 Servlet 控制器 jakarta.servlet-api provided Tomcat 已提供,避免冲突
连接 MySQL mysql-connector-j runtime 编译只认 JDBC 接口,运行才需具体驱动
单元测试 junit-jupiter test 仅测试阶段,生产无感
统一子模块版本 spring-boot-dependencies import 只管理版本,不引入 jar
http://www.jsqmd.com/news/295856/

相关文章:

  • 工业设计AI助手上线,Qwen-Image-Edit-2511来啦
  • DeepSeek-R1 vs ChatGLM4轻量版:代码生成任务GPU效率对比
  • Calibre中文路径保护插件技术解析:从拦截原理到深度配置
  • OpenModScan:破解工业设备通讯难题的开源解决方案
  • YOLOv11与Faster R-CNN对比:目标检测模型部署实测
  • 如何用C工具实现JSX二进制转换?JSXBin高效解码解决方案
  • 通过SSH连接YOLO11环境,远程开发超方便
  • 文艺复兴美学与现代设计的完美融合:开源复古字体EB Garamond 12全解析
  • 5款颠覆Windows操作体验的效率工具解锁效率革命
  • Qwen3-0.6B批量推理优化:批处理参数设置与GPU利用率提升
  • IndexTTS-2模型热更新:不停机替换音色实战教程
  • TurboDiffusion虚拟人应用:表情动作驱动视频生成教程
  • 旧设备性能激活:三步定制化升级macOS Catalina全指南
  • Qwen3-4B部署教程:Windows WSL环境快速上手机械版
  • Qwen3-1.7B LangChain调用教程:Python集成完整指南
  • MAA自动化工具:提升明日方舟游戏效率的智能作战方案
  • 工业现场I2C HID设备无法响应的全面讲解
  • 7大方案解决iOS降级工具downr1n运行失败的全面指南
  • 企业身份认证体系构建:SSO服务架构的技术探索指南
  • 小白福音!PyTorch-2.x-Universal-Dev镜像保姆级使用教程
  • 革命性突破:Android富文本引擎如何重塑移动端文本解析体验
  • 高效零成本的开源图像矢量化工具:从像素到矢量的完美转换方案
  • WSA-Pacman:让Windows安卓子系统应用管理变得如此简单
  • 图文并茂讲解:如何使用cv_resnet18_ocr-detection进行微调训练
  • 无人机地面站系统实战指南:从问题解决到行业应用
  • GPU资源紧张怎么办?Qwen轻量化部署优化实战
  • m3u8下载器完全指南:解决流媒体下载难题的高效方案
  • Qwen2.5-0.5B免费方案:开源镜像助力个人项目开发
  • MISRA C++编码规范快速理解:十大必知条款
  • 常见波特率数值选择解析:从9600到115200实战案例