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的启动时间前后关系

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 第三方SDK集成库(授权|分享|支付) 果冻肉效果的Toolbar 一个封装多种特性的ViewPager 仅使用一...
    dynsxyc阅读 881评论 0 4
  • 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。可以使用模板来定义函数和类 函数模板 模板...
    showaichuan阅读 243评论 0 0
  • 这周自学《干法》中的不是“最佳”,而是“完美”这一小节,书中稻盛老先生提到:我所考虑的“完美主义”不是更好,...
    刘学梅阅读 273评论 0 0
  • 一年半了,时间过的如此之快,我还停留在小孩子的梦里,但是我马上就要二十岁了,这个年龄已经有很多同学有孩子了,或许他...
    路人甲乙丙ABC阅读 295评论 0 0