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>

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

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

相关推荐
金融小师妹31 分钟前
应用BERT-GCN跨模态情绪分析:贸易缓和与金价波动的AI归因
大数据·人工智能·算法
武子康34 分钟前
大语言模型 10 - 从0开始训练GPT 0.25B参数量 补充知识之模型架构 MoE、ReLU、FFN、MixFFN
大数据·人工智能·gpt·ai·语言模型·自然语言处理
帮帮志2 小时前
idea整合maven环境配置
java·maven·intellij-idea
睎zyl5 小时前
Spark自定义分区器-基础
大数据·分布式·spark
巨龙之路5 小时前
【TDengine源码阅读】DLL_EXPORT
大数据·时序数据库·tdengine
元6336 小时前
搭建spark-local模式
大数据·spark
巨龙之路6 小时前
TDengine编译成功后的bin目录下的文件的作用
大数据·时序数据库·tdengine
莫叫石榴姐6 小时前
大模型在数据分析领域的研究综述
大数据·数据挖掘·数据分析
百锦再7 小时前
大数据技术的主要方向及其应用详解
大数据·linux·网络·python·django·pygame
2401_cf8 小时前
如何创建maven项目
java·maven·intellij-idea