Maven工程中排除依赖打包的两种方式

在Maven工程中,我们常需要依赖各种第三方库完成项目开发,但在最终交付时,往往不希望将这些依赖本身打包到产品中,以减小发布包体积。此时,可以通过以下两种方式实现:

使用provided

这适用于那些编译时需要,但运行时会由服务器或运行环境提供的库,典型的如Servlet API、JDBC驱动等。可以像下面这样配置:

xml 复制代码
<dependency>
 <groupId>groupId</groupId>
 <artifactId>artifactId</artifactId>
 <version>version</version>
 <scope>provided</scope> 
</dependency>

这种方式编译通过且可以写代码引用,但不会被打入最终包中。

使用true

这表示一个完全可选的依赖,默认是不参与打包的,只有手动设置了才会被包含在内。例如:

xml 复制代码
<dependency>
 <groupId>groupId</groupId>
 <artifactId>artifactId</artifactId>
 <version>version</version>
 <optional>true</optional>
</dependency>

两者都可以实现排除依赖打包,但强调编译必须而运行时不需要,完全是可选依赖。合理运用可以减小项目发布包体积。

两者的共同点是都可以排除依赖的打包,不同在于 表示完全可选,而 表示编译必须但运行时由外部容器提供。

相关推荐
天码-行空1 小时前
【大数据环境安装指南】ZooKeeper搭建Storm高可用集群教程
大数据·zookeeper·storm
行业探路者1 小时前
提升旅游行程管理效率的二维码文件生成方案
大数据·人工智能·学习·二维码·产品介绍
计算机毕设指导62 小时前
基于微信小程序的家政服务与互助平台【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven
CNRio2 小时前
Day 48:Git的高级技巧:使用Git的worktree多工作区管理
大数据·git·elasticsearch
whltaoin2 小时前
【AI Agent Skills】重塑 AI Agent 竞争力:Skills 体系的核心价值、构建方法与未来方向
大数据·人工智能·agent·agent skills
SatVision炼金士3 小时前
Mac 安装Homebrew记录
java·elasticsearch·macos·maven
刘一说4 小时前
JDK、Maven、Spring Boot 各版本兼容性问题
java·spring boot·maven
Sui_Network4 小时前
Walrus 2025 年度回顾
大数据·前端·人工智能·深度学习·区块链
一条闲鱼_mytube4 小时前
CI/CD: K8S + Tekton + ArgoCD 深入浅出完全指南
大数据·argocd
一条闲鱼_mytube4 小时前
CI/CD: Argo 深入浅出教程
大数据·elasticsearch·argocd