近几天开始准备为其他业务部门做一部分容器化,自动化编译流程出来。理想使用的事jnekins + maven +SVN,一键生成容器镜像,在创建jenkins工程中发现,拉取的代码无法通过系统的maven工具进行编译,并遇到了一系列错误。
jenkins服务器上最早使用的版本为maven 3.3.9,开始编译时报错,最初以为是maven版本过老了,
下载了最新的3.6.1:
[root@Jenkins-ops-master ops]# mvn -version
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
Maven home: /usr/local/ops/maven
Java version: 1.7.0_80, vendor: Oracle Corporation, runtime: /usr/local/ops/jdk1.7.0_80/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-926.573.26.1.letv.el6.x86_64", arch: "amd64", family: "unix"
但在编译过程中发现,使用的还是之前3.3.9版本
15:09:23[workspace] $ /usr/local/ops/apache-maven-3.3.9/bin/mvn -f pom.xml clean install -Dmaven.test.skip=true
想起未改变jenkins的外链工具:
这里配置好了,现在服务器中新下载的maven环境,然后再进行编译,依然出现了问题
[ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): Received fatal alert: protocol_version -> [Help 1]
尝试使用google查询该问题,在stack overflow上很多答案都是说删除maven的原有使用的插件目录,一般目录位置是在jenkins 编译用户的家目录下的.m2下,本服务器位置是/home/leworker/.m2/repository,此目录下为maven相关插件的下载目录,我首先保存了备份了此文件目录,然后删除了此目录,但之后仍然报相同错误
之后根据网上的建议调整过maven 使用中央仓库,换成阿里云的
vim /usr/local/ops/maven/conf/settings.xml
但问题依旧存在,同时尝试使用手动的方式进行更新插件
mvn org.apache.maven.plugins:maven-clean-plugin -e
命令行下显示错误
could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central
最后解决办法是从测试环境的jenkins服务器上,将所需的maven仓库目录copy到本机上,
同时需要修改属组,属主。最后编译成功了
另外或者在settings.xml中,使用代理的方式进行下载据说也是可行的,没验证过。
网友评论