为什么需要处理本地依赖
在现代后端开发中,构建高效且可扩展的 Web 应用程序通常依赖于多种第三方库和内部依赖。这些依赖可以来自公共仓库,也可能是公司内部自研的库或尚未发布到公共仓库的 JAR 包。
常见问题:使用 system 作用域
在 Maven 中,可以使用 system 作用域来引用本地 JAR 包。然而,这种方法有几个显著的缺点:
- 不可移植性:
system作用域依赖的路径是硬编码的,其他开发人员在不同的环境中可能无法找到该路径。 - 打包问题:使用
system作用域的依赖默认不会包含在最终打包的 JAR 文件中,导致运行时缺少必要的依赖。
为了避免上述问题,推荐的做法是将本地依赖库安装到 Maven 本地仓库中,并使用常规的依赖管理机制进行引用。这样,可以确保依赖库的一致性和可移植性,同时也方便后续的依赖管理和版本控制。
具体操作步骤
以下是详细的步骤,展示如何在 Maven 项目中包含本地依赖库并将其打包到最终的 JAR 文件中。我们以 Doris 连接器(flink-doris-connector)作为示例,但这同样适用于其他本地依赖库。
1. 将本地 JAR 安装到 Maven 本地仓库
首先,需要将本地的 JAR 包安装到 Maven 的本地仓库中。假设有一个本地的 flink-doris-connector JAR 文件位于项目的 libs 目录下。打开终端,执行以下命令:
mvn install:install-file \
-DgroupId=org.apache.doris \
-DartifactId=flink-connector-doris_2.12 \
-Dversion=1.14_2.12-1.1.1 \
-Dpackaging=jar \
-Dfile=libs/flink-doris-connector-1.14_2.12-1.1.1.jar
参数说明:
-DgroupId:依赖的组织 ID,通常与包名相对应。-DartifactId:依赖的模块名。-Dversion:依赖的版本号。-Dpackaging:依赖的打包类型,通常为 jar。-Dfile:本地 JAR 文件的路径。
通过上述命令,将本地的 JAR 包安装到 Maven 本地仓库中,使其能够像其他依赖一样被 Maven 管理。
2. 修改 pom.xml 中的依赖配置
安装完成后,需要在项目的 pom.xml 文件中引用该依赖。移除之前使用 system 作用域的配置,并改为默认的 compile 作用域。
原始依赖配置(使用 system 作用域):
<dependency>
<groupId>org.apache.doris</groupId>
<artifactId>flink-connector-doris_${scala.binary.version}</artifactId>
<version>1.14_2.12-1.1.1</version>
<scope>system
${project.basedir}/libs/flink-doris-connector-1.14_2.12-1.1.1.jar


