2014-01-23 157 views
1

我已经使用Selenium webdriver创建了一个自动化测试套件,Maven & Java.Also我创建了一个shell脚本来启动web驱动程序,然后使用maven命令执行测试套件。这很好。从cron作业执行Maven命令

但是,当使用cron作业运行相同的shell脚本时,maven命令不会执行。 我看到了一些解决方案,在shell脚本中为maven指定路径。那也不适合我。

#/斌/庆典

回声 “/bin/sh /home/loop/bin/startSelenium.sh start

CD /家/我/项目/ my_test_suite

出口PATH = $ PATH:/首页/我/安装/ Apache的行家-3.0.4/bin中

MVN干净的测试-DsuiteXmlFile =/SRC /测试/资源/的testng.xml -Ptest -Dgroups = GROUP0 >>〜/斌/ mvnLogGroup1.txt

在这里可以通过cron作业运行mvn命令?

感谢

+0

通常在cron作业中,环境看起来与普通用户不同。我想这可能是原因。 – khmarbaise

回答

0

希望运行在你的脚本可以帮助整个路径的行家。
/home/me/installs/apache-maven-3.0.4/bin/mvn clean test -DsuiteXmlFile=/src/test/resources/testng.xml -Ptest -Dgroups=group0 >> ~/bin/mvnLogGroup1.txt

+0

我试过这个菲德尔。但仍然没有执行mvn命令 – kushan

0

man crontab

若干环境变量由cron(8)守护程序自动设置。 SHELL设置为/ bin/sh,并且LOGNAME和HOME从crontab所有者的/ etc/passwd行设置。 HOME和SHELL可能会被crontab中的设置覆盖; LOGNAME不可以。

PATH(您正在使用$PATH)不是这些变量之一!你将需要包含诸如Java等可能更多的东西。

尝试此操作:将PATH设置为空白,然后从命令行运行脚本。这应该给你一个很好的主意,你需要在你的脚本中进行说明。

2

我有同样的问题,我通过将mvn调用放入shell脚本并从cron调用shell脚本来解决它。这种方式的优点是可以在shell脚本中设置环境变量。这是我的shell脚本:

#!/bin/bash 

export PATH=$PATH:/opt/mvn/bin:/usr/bin 
export M2_HOME=/opt/mvn 
export M2=/opt/mvn/bin 
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ 

/opt/mvn/bin/mvn -f /mnt/crawler/versioneye_maven_crawler/pom.xml crawl:clojars 

我在/ opt/mvn中安装了Maven。在crontab中的条目如下所示:

1 1 * * * /mnt/crawler/clojars.sh >> /mnt/crawler/clojars.txt 

这对我在Ubuntu上适用。这就是我们如何抓取clojarsVersionEye。希望对你有所帮助。