打开Hybris安装文件夹下的recipes,随便打开一个recipe的build.gradle文件,发现使用了installer-platform-plugin和installer-addon-plugin这两个plugin. Groovy setup任务的逻辑,也就是使用这两个plugin里的实现,根据config实例化platform对象,然后调用其setup方法和executeAntTarget方法。

这两个方法的实现源代码在哪里?这就是本文所要描述的内容。

去docs文件夹里可以找到插件的实现源代码:

到源代码里根据executeAntTarget进行搜索:

在AbstractPlatform.groovy里找到了executeAntTarget的实现逻辑,发现其delegate到了成员属性antExecutor里:

这个antExecutor的类型是HybrisAntExecutor:

找到HybrisAntExcutor,发现其只不过是调用类HybrisPluginUtils的静态方法:

# 静态方法之一:runProcess

实现核心:

```groovy

private static void runExternalProcess(String workDir, String[] command, Closure closure) {        def builder = new DefaultExecHandleBuilder()        builder.setWorkingDir((new File(workDir)).absolutePath)        builder.setCommandLine(command)        if (closure) closure.call(builder)        def handle = builder.build()        handle.start()        def result = handle.waitForFinish()        if (result.getExitValue() != 0) {            throw new IllegalStateException("external process returned non-zero exit code, command: ${command}")        }    }

```

运行外部程序的方法,使用的是Groovy SDK提供的import org.gradle.process.internal.DefaultExecHandleBuilder.

# 静态方法之二:isWindowsOs

import org.apache.tools.ant.taskdefs.condition.Os

# HybrisAntExcutor方法之一:getWindowsAntCmd

```groovy

 private String[] getWindowsAntCmd(String antArgs, String antOpts) {        def antPreCommand = "set "ANT_OPTS=${antOpts}""        antPreCommand += " & set "PLATFORM_HOME=${platformHome}""        antPreCommand += " & set "ANT_HOME=${platformHome}apache-ant-1.9.1""        antPreCommand += " & set "PATH=${platformHome}apache-ant-1.9.1bin;%PATH%""        String antCommand = "${antPreCommand} & ant ${antArgs}"        ['cmd', '/c', antCommand]    }

```

apache ant 安装_SAP Hybris使用recipe进行安装时,是如何执行ant命令的?相关推荐

  1. CentOS7.9下nginx的安装与配置(实现任意目录下均可直接执行 nginx 命令,以及开机自启动)

    目录 1.​​​​​​Nginx介绍 2.Nginx和apache的优缺点 2.1nginx相对于apache的优点: 2.2apache 相对于nginx 的优点: 3.Tengine介绍 3.1t ...

  2. SAP Hybris使用recipe进行安装时,是如何执行ant命令的?

    打开Hybris安装文件夹下的recipes,随便打开一个recipe的build.gradle文件,发现使用了installer-platform-plugin和installer-addon-pl ...

  3. ccs安装多版本编译器离线_windows 安装mysql多版本 主从复制

    作者:chenjunbiao 出自:SegmentFault 思否 原文:segmentfault.com/a/1190000025135698 在windows7下安装mysql以下版本: 1.my ...

  4. macos安装低版本php,mac下安装多个版本PHP及切换

    mac电脑原来安装的是php 5.6.29 现在再安装两个版本.php 5.6.32 php 7.0.27 本文的原理就是用一个php管理工具(php-version)管理切换两个php. 首先要先安 ...

  5. python3 32位安装_【转载】python3安装scrapy之windows32位爬坑

    早就听说scrapy不支持python3,而scrapy作为一款优秀的开源框架,不在新的python上集成一下实在可惜.最近刚好打算开始学习网络爬虫,网上又有那么多教程,so今天就来爬一下这个坑. 首 ...

  6. php源码怎样安装mysql_Linux下源码包安装mysql、apache以及php

    Linux下安装mysql.apache以及php实现论坛的安装 我安装大致分为五大步骤 0.前期准备工作 1.Mysql的安装 2.Apache的安装 3.Php的安装 4.最后来实现论坛的安装 0 ...

  7. mysql安装 张宴_Linux_centos5 源码安装Nginx + mysql + apache + php的方法,主要依照的是张宴的一篇博文 - phpStudy...

    centos5 源码安装Nginx + mysql + apache + php的方法 主要依照的是张宴的一篇博文<http://blog.s135.com/post/366/>,安装的软 ...

  8. Apache 2.4.7在CentOS6.4中安装配置反向代理解决单外网IP对应多个内网主机的方法实践

    欢迎转载,转载时请保留全文及出处. Apache 2.4.7在CentOS6.4中安装配置反向代理解决单外网IP对应多个内网主机的方法实践 Apache安装 下载源程序(http://httpd.ap ...

  9. apache php ffmpeg,linux(php环境) 安装ffmpeg

    实现上传视频获取视频的第一帧当做视频封面 1.安装ffmpeg 解压安装包 tar -jxvf ffmpeg-4.0.tar.bz2 //可能这一步会报错,如果报错是  yasm/nasm not f ...

最新文章

  1. oracle sql 获取本季度所有月份,上季度所有月份
  2. spring boot配置文件:application.yml (yml与properties文件优缺对比)
  3. 速卖通爆款如何打造,爆款的周期有多久?
  4. HDU - 6610 Game(带修莫队)
  5. Angular应用的依赖注入调试
  6. Vuex说明及Todos项目改造
  7. C# Winform 窗体美化(八、Icon)
  8. undefined reference to `kbhit'
  9. 有人说赚钱靠项目,也有人说赚钱靠技术
  10. 【TDA4系列】CCS 最新版本安装与教程地址
  11. linux shell pattern,shell 三剑客之 sed pattern 详解
  12. 声卡loopback有什么用_sam机架宿主软件无法获取声卡ASIO问题解析
  13. 普林斯顿微积分读本篇十一:最优化和线性化
  14. java类的封装关系_Java—类的封装、继承与多态
  15. Oracle VM VirtualBox 打开Ubuntu出现0x00000000指令引用的0x00000000内存,该内存不能为written的解决方案
  16. 青蛙跳台阶问题(超详解)
  17. android 离线地图 开源,android osmdroid 加载常用离线地图格式(开源的在线地图)...
  18. 硬盘 SMART 检测参数详解[转]
  19. 内存耗尽后Redis会发生什么
  20. Cognos问题解决

热门文章

  1. 网络工程师_要记录下来的一些题_4
  2. IaaS, PaaS和SaaS是云计算的三种服务模式
  3. Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!
  4. 还在用肉眼找不同吗?这个技术轻松搞定
  5. 多目标跟踪 | FairMOT:统一检测、重识别的多目标跟踪框架,全新Baseline
  6. mysql查询各个知识点
  7. Docker overlay网络互通
  8. Spring-Boot快速搭建web项目详细总结
  9. 打印出所有的中文字符
  10. 高效模式编写者的7个习惯