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>

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

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

相关推荐
Lansonli14 小时前
大数据Spark(七十六):Action行动算子reduce和take、takeSample使用案例
大数据·分布式·spark
`林中水滴`15 小时前
Hive系列:Hive 整合 HBase
hive·hbase
鲨莎分不晴15 小时前
HBase 基本使用详解
大数据·数据库·hbase
Sinokap15 小时前
Gemini 3 Flash:在速度、成本与前沿智能之间的平衡
大数据·人工智能
SpaceAIGlobal15 小时前
基于 Elasticsearch 实现排序沉底与前置的方法解析
大数据·elasticsearch·搜索引擎
Hello.Reader15 小时前
Hadoop Formats 在 Flink 里复用 Hadoop InputFormat(flink-hadoop-compatibility)
大数据·hadoop·flink
s***872715 小时前
TCP/IP协议栈深度解析技术文章大纲
hive·spring boot
视***间15 小时前
视程空间AIR算力开发平台:以边缘智能之核,驱动机器人产业迈入全域自动化时代
大数据·人工智能·机器人·区块链·边缘计算·视程空间
invicinble15 小时前
认识es的多个维度
android·大数据·elasticsearch
玄微云15 小时前
从混乱到高效:2026年玄微科技如何重塑孕产门店运营?
大数据·科技·物联网·门店管理·产康门店