项目背景:

九代单传SSM项目,项目代码、maven库直接从同事处拷贝。项目在同事那边可正常运行、可成功打包。该项目环境搭建完之后,可以在本机正常运行。但是maven打包,报错。

fastdfs_client-1.25.jar包,在maven中央仓库是没有的。至于怎么来的,因为祖传代码的原因已经无从考证了。据悉,最初项目组是搭建过私服的,这个jar包可以从私服下载。但是,目前私服已经停用。

1、最初的时候,打包报错如下:

maven linux 打包内存溢出问题 maven打包失败的原因_maven


这个错误的原因是:因为下载不到,我不让他走在线下载的模式,所以选择了offline模式。显然,他还是走了途中地址,下载失败,并且提示这个包以前没有下载过。(这样说,其实也对,因为仓库没有,肯定是没下载过)

2、然后,我调回在线模式,还是报错。并且其他的一些jar包也出现了问题。

maven linux 打包内存溢出问题 maven打包失败的原因_maven_02


导入maven时,控制台报错如下:

Could not transfer artifact org.csource:fastdfs_client:pom:1.25 from/to public (http://repo1.maven.org/maven2/): Failed to transfer file http://repo1.maven.org/maven2/org/csource/fastdfs_client/1.25/fastdfs_client-1.25.pom with status code 501

3、至此,我开始怀疑项目识别不到这个jar包,想要手动指定。

打开projectstructure,果然报错了,手动指定。

maven linux 打包内存溢出问题 maven打包失败的原因_maven_03


手动指定完了,但是导入玩,又报错了。

4、网上查了方法。使用这种方式,将jar包安装到本地。这种方案,我个人认为应该是对的。其实就是远程库没有,就jar装到库里。

mvn install:install-file -DgroupId=org.csource -DartifactId=fastdfs-client -Dversion=1.25 -Dpackaging=jar -Dfile=F:\fastdfs_client-1.25.jar

成功了,但是仍然打包失败。
中间尝试过、删除.propeties(个人感觉这个方法就是扯犊子)等其他方法,均告失败。

5、万般无奈之下,再次分析了形式。基本方向仍然应该是打包使用本地包。

经前辈指点:

1)WEB-INF 下新建lib文件夹,将此jar包放到此文件夹下。

2)pom文件引入:

maven linux 打包内存溢出问题 maven打包失败的原因_jar包_04


3)同时,发现一个问题,我们项目引用的某个jar包内部也引用了这个包,导致了冲突。极有可能在2)的时候已经解决了,但是因为冲突一直报错。排除掉。

maven linux 打包内存溢出问题 maven打包失败的原因_maven_05

重要:20200620补充:

关于手动安装第三方jar包。(当然肯定是中央仓库没有的)

我在上边的第4步中,其实已经使用了。但是,很多人可能安装完后失败了。正好今天在做阿里云视频点播时,他有一个包没有正式开源,也需要手动安装。我也遇到了安装失败的问题(准确说也不是安装失败,而是安装错了位置)。

说一下具体情况:

jar包已经从阿里云下载下来了,解压到某目录下,比如我这个:

maven linux 打包内存溢出问题 maven打包失败的原因_jar_06


我得目标时将upload这个包安装到本地maven库。

按照正常操作,我应该在此目录下打开cmd窗口执行如下(跟4步骤类似,参数稍有不同,影响不大):

mvn install:install-file -DgroupId=com.aliyun -DartifactId=aliyun-sdk-vod-upload -Dversion=1.4.11 -Dpackaging=jar -Dfile=aliyun-java-vod-upload-1.4.11.jar

但是,安装完成(cmd窗口已经提示build success)后,重新导入发现项目中的依赖还是报错。仔细观察cmd窗口执行结果,发现:

maven linux 打包内存溢出问题 maven打包失败的原因_jar包_07


它将jar包安装到我上一家公司的某个项目对应的仓库中了。(平时我们做项目可能会根据不同情况,切换不同的仓库),这是因为,它按照这里的配置给安装的。

maven linux 打包内存溢出问题 maven打包失败的原因_maven_08


这里边的setting.xml中配置的本地库不是当前项目的仓库位置,把这里改成对应的仓库位置就好了。如:

maven linux 打包内存溢出问题 maven打包失败的原因_jar包_09

之后重复安装步骤即可:

maven linux 打包内存溢出问题 maven打包失败的原因_jar_10

查看项目,发现依赖已经正常。(要是还报错,重新导入依赖一半就好了)