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>

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

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

相关推荐
街灯L1 小时前
【kylin-Linux】Flash兼容插件包安装
大数据·linux·运维·kylin
min1811234562 小时前
AI金融风控:智能反欺诈与个性化理财
大数据·人工智能
渣渣盟3 小时前
大数据技术 Flink 优化之数据倾斜
大数据·flink
2501_933670793 小时前
高职/大专学计算机的突围路径
大数据
xinyuan_1234563 小时前
不止于提速:德州数智招标采购交易平台,重塑采购生态新效率
大数据·人工智能
山峰哥3 小时前
SQL索引优化实战:3000字深度解析查询提速密码
大数据·数据库·sql·编辑器·深度优先
程序员哈基耄4 小时前
安全高效,本地运行:全能文件格式转换工具
大数据·python·安全
数说星榆1814 小时前
小型工厂工艺流程图制作_在线设计装配/焊接/冲压工艺流程模板
大数据·论文阅读·人工智能·流程图·论文笔记
历程里程碑5 小时前
双指针2--盛水最多的容器
大数据·数据结构·算法·leetcode·elasticsearch·搜索引擎·散列表
川西胖墩墩5 小时前
智能交通管理:实时路况优化与拥堵预测
大数据