Jekins发布项目获取到的path环境变量

调试代码时发现一个很奇怪的问题,本地通过java执行命令行时没有报错

log.info("commendStr={}",commandStr);

Process p = Runtime.getRuntime().exec(commandStr, null , new File(cmdPath));

if(p !=null){

p.getOutputStream().close();

}

br =new BufferedReader(new InputStreamReader(p.getInputStream()));

String line =null;

StringBuilder sb =new StringBuilder();

while ((line = br.readLine()) !=null) {

sb.append(line +"\n");

}

int i = p.waitFor();

log.info("process wait for return --->{}",i);

主要功能是执行commandStr    的命令 

但是通过jekins发布项目到其他机器会发现无法识别commandStr中的命令,在部署的机器上查看path环境变量也没发现问题,将命令单独在机器上运行也没问题

通过jekins编写了一个shell脚本 直接执行  shell中的命令为查询path 发现执行出来的结果和机器上查询出来的结果不一致,重启jekins后代码能正常运行

由此初步得出结论 jekins启动后将path环境变量写入了自己缓存中,外部机器path改动并不会导致jekins刷新缓存变量,如果代码中有使用命令行依赖path的需要特别注意:加入到path时间和jekins的启动时间前后关系

你可能感兴趣的:(Jekins发布项目获取到的path环境变量)