需求描述:
在使用Maven 构建项目,可能会遇到依赖不存在的场景(但是IDEA等直接运行正常的情况)。
错误分析:
system作用域的依赖在打包(mvn package)时不会包含在项目的构建产物中。这是因为 system 作用域通常用于引入本地系统中的 JAR 文件,而不是从 Maven 仓库中解析。要解决的问题: 就是让Maven可以解析第三方依赖就好了。
解决思路有两个:
- 把第三方依赖放到私仓,保证maven的配置文件可以从私仓下载依赖。
- 把第三方依赖放到本地仓库,让 maven 可以管理。
第一个方案适用于:项目不着急哈,可以选择使用Nexus搭建私仓,教程可看: Nexus搭建个人仓库。好处是利于开发团队有效的管理依赖。
第二个方案适用于:真的着急打包,没时间管别人,能用为先。
一、安装第三方(system)依赖到本地仓库,救急方法
参考命令:
mvn install:install-file \
-Dfile=path/to/your/artifact.jar \
-DgroupId=your.groupId \
-DartifactId=your-artifactId \
-Dversion=1.0 \
-Dpackaging=jar
- -Dfile: 指定要安装的 JAR 文件的路径。
- -DgroupId: 指定项目的 Group ID。
- -DartifactId: 指定项目的 Artifact ID。
- -Dversion: 指定项目的版本号。
- -Dpackaging: 指定 JAR 文件的打包类型,这里是 jar。
举个例子,我之前的第三方依赖有一个:
<dependency>
<groupId>com.olym.jdbc</groupId>
<artifactId>olym-jdbc</artifactId>
<version>1.8.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/olym-jdbc-1.8.0-GA-pg.jar</systemPath>
</dependency>
运行命令
mvn install:install-file -Dfile=/Users/nanan/Documents/work/deepcloud_4a/libs/olym-jdbc-1.8.0-GA-pg.jar -DgroupId=com.olym.jdbc -DartifactId=olym-jdbc -Dversion=1.8.0 -Dpackaging=jar
执行命令后,本地仓库就有了这个依赖,打包时就会有这个第三方依赖。
重点:
- 这个方法只是救急哈,或者说适合个人开发者,或者第三方依赖很少并且版本稳定。
- 最好还是搭建一个私仓,进行依赖管理。Nexus搭建个人仓库

被折叠的 条评论
为什么被折叠?



