美文网首页
Jenkins+Maven+Linux的持续崩溃

Jenkins+Maven+Linux的持续崩溃

作者: 康加罗 | 来源:发表于2019-03-19 18:13 被阅读0次

    又出状况了!

    在项目中我们自己封装了一个服务,作为基础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编译就没有报错了!)

    相关文章

      网友评论

          本文标题:Jenkins+Maven+Linux的持续崩溃

          本文链接:https://www.haomeiwen.com/subject/kvtnmqtx.html