Jenkins+Maven+Linux的持续崩溃

又出状况了!

在项目中我们自己封装了一个服务,作为基础jar包,引入在各个服务中,我们称之为zijixiedebao.jar。

然而在执行编译ServiceA包的时候发现,jenkins服务器上并没有这个包……

一、引入zijixiedebao.jar

1、上传jar包

为了方便,我从本机的maven仓库里将zijixiedebao.jar上传到jenkins服务器。

好像不行。

2、本地安装

mvn install:install-file -Dfile=zijixiedebao.jar -DgroupId=com.zijidegroup -DartifactId=zijixiedebao -Dversion=1.0 -Dpackaging=jar

安装成功!

还是不行,因为zijixiedebao.jar还需要很多依赖,jenkins服务器还是没有。

3、源码安装

上传zijixiedebao项目的源码到jenkins服务器。

mvn install

安装成功!

二、编译失败

jenkins依然显示找不到zijixiedebao.jar包,无法引入。可是从服务器的默认仓库能够看到jar包,在服务器上直接编译ServiceA包也通过了。

那么真相只有一个,jenkins并没有使用默认仓库。(耽误了很久,但其实从console来看,ServiceA的编译过程中重新下载了pom的各个依赖,显然跟我们已经在服务器上直接编译ServiceA成功是矛盾的。)

三、修改Jenkins系统配置

1、configure配置

修改Maven项目配置-全局MAVEN_OPTS

增加 -Dmaven.repo.local=/本地仓库

这样在做maven编译的时候会增加这个参数,指定本地仓库。

失败了。

Could not create local repository at 本地仓库

(马后炮:当时本地仓库在/root目录下,是不是权限问题呢?)

2、configureTools全局工具配置

修改Maven配置-默认settings提供、默认全局settings提供

/本地maven/conf/settings.xml

失败了。并没有好转。

3、修改settings

突然发现console中的信息

Reading user toolchains from /jenkins主目录/.m2/toolchains.xml

什么?jenkins还有自己的.m2?

好的,我决定直接修改maven 的settings

vi /本地maven/conf/settings.xml

找到<localRepository>标签

增加/修改为

<localRepository>/jenkins主目录/.m2/repository</localRepository>

新的失败。

但是已经能够找到zijixiedebao.jar了!成功……50%!

4、权限修改

Failed to transfer Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.5.3.RELEASE from/to central (http://repo.maven.apache.org/maven2): /root/.m2/repository/org/springframework/boot/spring-boot-starter-parent/1.5.3.RELEASE/spring-boot-starter-parent-1.5.3.RELEASE.pom.part.lock (权限不够)

这个看起来很好解决

chmod 777 -R /jenkins主目录/.m2/repository

成功!

5、遗留问题

Failed to execute goal on project ServiceA: Could not resolve dependencies for project ServiceA: Failed to collect dependencies at zijixiedebao.jar -> org.aspectj:aspectjrt:jar:1.8.10: Failed to read artifact descriptor for org.aspectj:aspectjrt:jar:1.8.10: Could not transfer artifact org.aspectj:aspectjrt:pom:1.8.10 from/to central (https://repo.maven.apache.org/maven2): /jenkins主目录/.m2/repository/org/aspectj/aspectjrt/1.8.10/aspectjrt-1.8.10.pom.part.lock (没有那个文件或目录)

这个问题的诡异点在于, zijixiedebao.jar中引入的apsectjrt的版本是1.8.9,然而这里却在加载1.8.10,所以找不到依赖。

然后我尝试在jenkins服务器本地对ServiceA编译运行,果然在下载依赖时看到了1.8.10版本。

这,至今仍然是一个谜。

(当然由于ServiceA的本地编译,1.8.10成功下载到了仓库中,再通过jenkins编译就没有报错了!)

    原文作者:康加罗
    原文地址: https://www.jianshu.com/p/5c307e73ef53
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞