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>

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

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

相关推荐
Lx35218 小时前
Flink SQL在实时数仓中的应用
大数据
玥轩_52119 小时前
Git命令速查手册
大数据·git·elasticsearch·gitee·github·命令速查
口_天_光健19 小时前
制造企业的数据目录编写
大数据·数据库·数据仓库·数据分析
A-刘晨阳20 小时前
时序数据库选型指南:从大数据视角切入,聚焦 Apache IoTDB
大数据·apache·时序数据库·iotdb
汤姆yu20 小时前
基于大数据的短视频流量数据分析与可视化
大数据·数据挖掘·数据分析
Ribou20 小时前
Elasticsearch 9.2.0 三节点集群配置
大数据·elasticsearch·搜索引擎
啊吧怪不啊吧21 小时前
SQL之表的时间类内置函数详解
大数据·服务器·数据库·sql
Kent_J_Truman21 小时前
JDK Maven Tomcat Spring在VSCode中的部分配置细节(自用)
java·tomcat·maven
TDengine (老段)1 天前
TDengine 产品组件 taosX
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
运维_攻城狮1 天前
Nexus 3.x 私服搭建与运维完全指南(Maven 实战)
java·运维·maven