打开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

实现核心:

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

    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.1\\bin;%PATH%\""String antCommand = "${antPreCommand} & ant ${antArgs}"['cmd', '/c', antCommand]}

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

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

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

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

  2. sql sever 2012安装时遇到“试图执行未经授权的操作

    sql sever 2012安装时遇到"试图执行未经授权的操作" 这时候打开数据库SQL server2012安装目录的setup.exe,点击然后鼠标右键属性,点击打开然后点安全 ...

  3. 安装perf后,执行perf命令报错。

    系统版本: deepin 下安装perf 按道理来说,咱们通过apt install 安装好之后是可以直接运行perf 命令了,但是.... deepin 安装perf 后,执行perf命令报错: 此 ...

  4. PYQT5安装时,labelImg执行pyrcc5 -o libs/resources.py resources.qrc 报错:File does not exist ‘resources.qrc‘

    昨天安装pyqt5时,参照执行 pip install pyqt5 pip install lxml pyrcc5 -o libs/resources.py resources.qrc python ...

  5. jenkins配置中执行 ant 命令时,提示找不到ant 命令

    1.在服务器上手动执行ant ,则可以正常执行,但是使用jenkins 构建时却提示无法识别ant命令 查询了相关原因为:jenkins默认情况下执行shell脚本是使用非登录方式,然而非登录方式不会 ...

  6. php 运行 shell命令行参数,PHP exec()在通过浏览器执行时不会执行shell命令

    我有一个PHP脚本,调用exec()执行一个命令,将PDF转换为JPG.此命令在bash中工作正常. 要抢占您的初始故障排除猜测,请注意以下事项: > safe_mode = Off >包 ...

  7. Mysql安装时mysqld.exe报`应用程序无法正常启动(0xc000007b)`

    问题描述 mysql5.7.30解压版安装, 解压之后执行初始化命令, 桌面弹出提示"应用程序无法正常启动(0xc000007b)" 解决办法 查阅资料后, 得知原因是系统dll动 ...

  8. Ant命令执行build.xml时的参数传递

    执行Ant命令时,可以通过-D参数携带参数,传递到执行的XML文件中. ant -f build.xml -Dparam1=value1 -Dparam2=value2 在build.xml中定义参数 ...

  9. SAP Hybris Accelerator的安装和使用方式

    官网链接 进入文件夹<HYBRIS_HOME>/installer,使用cx recipe进行安装: install.bat -r cx -A initAdminPassword=[adm ...

最新文章

  1. github报错“remote: Support for password authentication was removed on August 13, 2021. Please use a p”
  2. 理解“动心忍性”的含义
  3. JDBC修改数据库(Object类的应用)
  4. WebSocket客户端连接断开后,服务器端的析构处理
  5. python变量和常量_python 变量与常量 - 刘江的python教程
  6. 问题十九:怎么模拟ray tracing中漫射材料球体的颜色(diffuse materials)
  7. HDR概念 (二十八)
  8. MATLAB实现离散傅里叶变换DFT
  9. 双击div变成可编辑区的简单实现
  10. Navigator的正确打开方式
  11. Python5.操作excel表格 xlrd库与excel的com接口和openpyxl库
  12. 《富爸爸财务自由之路》阅读笔记
  13. CS5801|替代LT6711A|HDMI转DP转接线方案|HDMI转DP带供电芯片方案
  14. 一文读懂C++虚函数的内存模型
  15. dlink打印服务器重置,DLink_DP310打印服务器用户手册.pdf
  16. 转:浅谈程序员的英语学习
  17. 计算机技术+智能化水电站,济南研祥嵌入式技术在水库信息智能化系统中的应用———济南研祥嵌入式技术在水库信息...
  18. 给新人程序员的 10 点建议
  19. 自动驾驶2021·谁将引领下一个10年?
  20. google浏览器不能播放wmv格式视频

热门文章

  1. 在Excel中实现查询功能
  2. 购物车的实现(cookie、session)
  3. win7下删除提示没权限删除文件的方法
  4. C#/Net代码精简优化技巧(1)
  5. 从零写一个编译器(二):语法分析之前置知识
  6. 50-overlay 如何实现跨主机通信?
  7. VBS脚本获取安全标识符SID(Security Identifiers)的方法
  8. AngularJs详细
  9. servlet多线程
  10. MySQL启动问题解决总结