apache ant 安装_SAP Hybris使用recipe进行安装时,是如何执行ant命令的?
打开Hybris安装文件夹下的recipes,随便打开一个recipe的build.gradle文件,发现使用了installer-platform-plugin和installer-addon-plugin这两个plugin. Groovy setup任务的逻辑,也就是使用这两个plugin里的实现,根据config实例化platform对象,然后调用其setup方法和executeAntTarget方法。
![](/assets/blank.gif)
这两个方法的实现源代码在哪里?这就是本文所要描述的内容。
去docs文件夹里可以找到插件的实现源代码:
![](/assets/blank.gif)
到源代码里根据executeAntTarget进行搜索:
![](/assets/blank.gif)
在AbstractPlatform.groovy里找到了executeAntTarget的实现逻辑,发现其delegate到了成员属性antExecutor里:
![](/assets/blank.gif)
这个antExecutor的类型是HybrisAntExecutor:
![](/assets/blank.gif)
找到HybrisAntExcutor,发现其只不过是调用类HybrisPluginUtils的静态方法:
![](/assets/blank.gif)
# 静态方法之一: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
![](/assets/blank.gif)
# 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命令的?相关推荐
- CentOS7.9下nginx的安装与配置(实现任意目录下均可直接执行 nginx 命令,以及开机自启动)
目录 1.Nginx介绍 2.Nginx和apache的优缺点 2.1nginx相对于apache的优点: 2.2apache 相对于nginx 的优点: 3.Tengine介绍 3.1t ...
- SAP Hybris使用recipe进行安装时,是如何执行ant命令的?
打开Hybris安装文件夹下的recipes,随便打开一个recipe的build.gradle文件,发现使用了installer-platform-plugin和installer-addon-pl ...
- ccs安装多版本编译器离线_windows 安装mysql多版本 主从复制
作者:chenjunbiao 出自:SegmentFault 思否 原文:segmentfault.com/a/1190000025135698 在windows7下安装mysql以下版本: 1.my ...
- macos安装低版本php,mac下安装多个版本PHP及切换
mac电脑原来安装的是php 5.6.29 现在再安装两个版本.php 5.6.32 php 7.0.27 本文的原理就是用一个php管理工具(php-version)管理切换两个php. 首先要先安 ...
- python3 32位安装_【转载】python3安装scrapy之windows32位爬坑
早就听说scrapy不支持python3,而scrapy作为一款优秀的开源框架,不在新的python上集成一下实在可惜.最近刚好打算开始学习网络爬虫,网上又有那么多教程,so今天就来爬一下这个坑. 首 ...
- php源码怎样安装mysql_Linux下源码包安装mysql、apache以及php
Linux下安装mysql.apache以及php实现论坛的安装 我安装大致分为五大步骤 0.前期准备工作 1.Mysql的安装 2.Apache的安装 3.Php的安装 4.最后来实现论坛的安装 0 ...
- mysql安装 张宴_Linux_centos5 源码安装Nginx + mysql + apache + php的方法,主要依照的是张宴的一篇博文 - phpStudy...
centos5 源码安装Nginx + mysql + apache + php的方法 主要依照的是张宴的一篇博文<http://blog.s135.com/post/366/>,安装的软 ...
- Apache 2.4.7在CentOS6.4中安装配置反向代理解决单外网IP对应多个内网主机的方法实践
欢迎转载,转载时请保留全文及出处. Apache 2.4.7在CentOS6.4中安装配置反向代理解决单外网IP对应多个内网主机的方法实践 Apache安装 下载源程序(http://httpd.ap ...
- apache php ffmpeg,linux(php环境) 安装ffmpeg
实现上传视频获取视频的第一帧当做视频封面 1.安装ffmpeg 解压安装包 tar -jxvf ffmpeg-4.0.tar.bz2 //可能这一步会报错,如果报错是 yasm/nasm not f ...
最新文章
- oracle sql 获取本季度所有月份,上季度所有月份
- spring boot配置文件:application.yml (yml与properties文件优缺对比)
- 速卖通爆款如何打造,爆款的周期有多久?
- HDU - 6610 Game(带修莫队)
- Angular应用的依赖注入调试
- Vuex说明及Todos项目改造
- C# Winform 窗体美化(八、Icon)
- undefined reference to `kbhit'
- 有人说赚钱靠项目,也有人说赚钱靠技术
- 【TDA4系列】CCS 最新版本安装与教程地址
- linux shell pattern,shell 三剑客之 sed pattern 详解
- 声卡loopback有什么用_sam机架宿主软件无法获取声卡ASIO问题解析
- 普林斯顿微积分读本篇十一:最优化和线性化
- java类的封装关系_Java—类的封装、继承与多态
- Oracle VM VirtualBox 打开Ubuntu出现0x00000000指令引用的0x00000000内存,该内存不能为written的解决方案
- 青蛙跳台阶问题(超详解)
- android 离线地图 开源,android osmdroid 加载常用离线地图格式(开源的在线地图)...
- 硬盘 SMART 检测参数详解[转]
- 内存耗尽后Redis会发生什么
- Cognos问题解决