Jenkins报错问题汇总
问题一:Jenkins没有执行打包操作,Parsing POMs后面没有输出
- 报错信息如下:
ERROR: No such settings file /usr/share/maven/conf/settings.xml exists
Please verify that your alternate settings file is specified properly and exists in the workspace.
Finished: FAILURE
- 解决方案:
- 检查Maven的settings.xml文件路径是否正确,我的就是查看:
ls /usr/share/maven/conf
; - 检查拼写是否有错误,如:settings.xml写成了setting.xml;
- 检查${JENKINS_HOME}/jobs/{project_name}/config.xml中settings和globalSettings节点配置的path是否正确,我的错误就是这两个节点配置的path不正确,多了一个空格;
- 也可以进入Jenkins任务配置里进行修改
- 修改过后重启jenkins即可。
问题二:Jenkins打包时找不到依赖的common包
-
报错信息如下:
-
我的项目结构如下: xlma是父POM文件,xlma-main赖于xlma-system,xlma-system又依赖于xlma-api,xlma-uniapp直接依赖于xlma-api,现在想创建2个任务分别启动main和uniapp服务
– xlma
– xlma-main
– xlma-system
– xlma-api
– xlma-uniapp
– xlma-api -
解决方案:
- 父pom文件的所有子模块要写全,并且层级高的模块要写在前面,同层级的模块前后顺序无所谓:
<modules>
<module>xlma-main</module>
<module>xlma-uniapp</module>
<module>xlma-system</module>
<module>xlma-api</module>
</modules>
- Jenkins任务配置打包命令可以选择以下2种:
// 父pom下的所有子模块均会打包
clean install -Dmaven.test.skip=true -Ptest
// 指定xlam-main模块及其所依赖的所有子模块会打包
clean install -pl xlma-main -am -Dmaven.test.skip=true -Ptest
- mvn指令参数解释:
参数 | 说明 |
---|---|
-pl | 打包指定的模块,多个模块以逗号分隔 |
-am | 向下的,打包指定模块所有依赖的模块(配合-pl参数使用) |
-amd | 向上的,打包所有依赖指定模块的模块(配合-pl参数使用) |
-rf | 按指定顺序开始打包 |
-Dmaven.test.skip=true | 跳过测试,不然所有测试类都要执行而且必须要正确通过 |
-P | 指定打包的环境,如-Pprod表示打包prod环境的jar包 |
问题三:Jenkins启动jar包不成功,直接在服务器运行脚本可以启动成功
- 在脚本中添加:
source /etc/profile
,刷新运行环境; - 要启动过的jar包一定要写绝对路径,如:
/usr/local/projects/xlma-main/xlma-main.jar
- 我的脚本如下:
#!/bin/bash
source /etc/profile
pid=`ps -ef | grep xlma-main.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
echo "正在结束原进程:$pid"
kill -9 $pid
fi
echo "正在启动..."
nohup java -jar /usr/local/projects/xlma-main/xlma-main*.jar > /dev/null 2>&1 &
sleep 2
new_pid=`ps -ef | grep xlma-main.jar | grep -v grep | awk '{print $2}'`
if [ -n "$new_pid" ]
then
echo "启动成功"
else
echo "启动失败"
fi