我无法通过Shell脚本运行MVN目标

时间:2018-11-01 07:11:04

标签: bash shell

我只是在JENKINS“ Execute Shell” cmd中的Post Build活动中使用了以下shell脚本

 #!/bin/bash
 mvn --version
 export M2_HOME=/opt/maven/maven-3.3.3 # your Mavan home path
 export PATH=$PATH:$M2_HOME/bin
 mvn --version
 echo $HOME
 echo $WORKSPACE

 file=$WORKSPACE/XXXX/XXXX-reports
 cd $file

 cp XXXX-1.html test.html

 fail=`grep "test-method.*FAIL" results.xml | sed -e 's/^.*test- 
 instance-name="\(.*\) ' | tr '\n' ','`
 echo $fail

 count=0

 while [ $count -lt 5 ]
 do
 if [ ! -z "$fail" -a  "$fail" != " " ];

 then

 echo `$M2_HOME/bin/mvn clean test -f ../../pom.xml -DInclude=${fail}`
 cp XXXX-report.html ReReport_$count.html

 retry=`expr $count + 1`

 fi
 done

在上面的shell脚本中,我试图运行mvn命令,并继续运行5次以增加UNIT脚本执行中的通过次数。

但是它不起作用。无法执行行家目标。因此,我只注释可执行文件并添加echo进行调试。 但是没有运气。

任何线索

1 个答案:

答案 0 :(得分:0)

我建议您使用以下脚本来修改您的脚本。在此处添加参数。 产品日志文件:mvn_jenkins.log将使您轻松找到mjuarez建议的问题:

#!/bin/bash
MVNCMD=$(command -v mvn)
MVNPARAMS=" -version" # replace with your appropriate params
LOGFILE="mvn_jenkins.log"
COUNT=0
while [ $COUNT -lt 5 ]; do
 echo "Execute: $MVNCMD $MVNPARAMS" >> $LOGFILE
 echo "-------" >> $LOGFILE
 $MVNCMD $MVNPARAMS 2>&1>> $LOGFILE
 echo "" >> $LOGFILE
 COUNT=$((COUNT + 1))
done

说明:

MVNCMD = $(command -v mvn):将maven执行文件的完整限定名称放入MVNCMD var

$ MVNCMD $ MVNPARAMS 2>&1 >> $ LOGFILE :执行带有参数的mvn命令,并将错误输出消息(2)和常规输出消息(1)重定向到日志文件。

关于您的maven参数,我不明白您为什么使用 -DskipTests = true