在学习jenkins的过程中,遇到了 'android' 不是内部或外部命令 问题 ,再在此记录
在配置好jenkins环境之后,我尝试构建本地项目。在“新增构建步骤”中选择“execute Windows batch command”,在输入如下代码
E:
cd E:\workspace\test6
android update project --name test6 -p ./ --subprojects
ant debug
即定位到android工程test6的目录,执行更新项目,然后用ant命名打包debug版本的命令,
但是最后编译失败“ Console Output”中输出的是
Started by user anonymous
Building in workspace E:\workspace
[workspace] $ cmd /c call C:\Windows\TEMP\hudson2024457796563965089.bat
E:\workspace>E:
E:\workspace>cd E:\workspace\test6
E:\workspace\test6>android update project --name test6 -p ./ --subprojects
'android' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
E:\workspace\test6>ant debug
'ant' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
E:\workspace\test6>exit 9009
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE
cmd启动成功,跳转到test6目录也成功,但是执行android命令和ant命令失败 ,"'android' 不是内部或外部命令,也不是可运行的程序或批处理文件。"
第一反应是环境变量配置失败。
但是直接启动cmd,执行相应的代码,是可以正常执行了。
分析是jenkins没有得到配置的环境变量。因为我的jenkins是通过管理员权限用jenkins.msi 安装包安装的,所以jenkins启动的时候 用名是system,而我配置的环境变量是在用户变量中的。所以jenkins拿不到我的环境变量。
这样解决的方案有两种了:
1、将相关的环境变量配置到系统环境变量中,就可以了。(这就不用说了吧)
2、将jenkins改为由相关的用户去启动。
因为公司的电脑,每次拿管理员权限需要申请,关机再启动需要再次申请,很麻烦,所以我使用的第二种方法。
具体的执行步骤如下:
右键单击“计算机”,选择“管理” ,点开“服务和应用程序”,打开“服务”,选择jenkins,(这里有个小技巧,选中任务管理器之后,按“j”,就会跳到j开头的任务上,多次点击就能很快的找到jenkins了),右键,选择“属性”,在“登陆”中选择“此账户”,,然后点击“浏览”,选择你的账号,需要和用户变量中的那个账号相同。
这里有个小细节,点击“浏览”后,弹出如下界面,在输入对象名称中输入你的用户名,点击检查名称来判断名称是否正确。
但是我在实际使用的过程中,发现我的用户名一直通不过,但是名称是没问题的。这个时候需要更改“查找位置”,
点击位置,弹出界面,选择“整个目录”下的那个文件,而不是选择“整个目录”
修改完成之后再去构建项目,就成功了!
ps:有的人说不能通过任务管理器关闭jenkins,可是尝试使用命令的形式,即:
在cmd中输入命令 "sc delete jenkins",
实际操作中成功关闭了jinkens
jenkins出问题,很多时候都是配置的问题(有时候发现问题了却很难再网上找到对应的解决方案,郁闷)。