SAP Hybris使用recipe进行安装时,是如何执行ant命令的?
打开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命令的?相关推荐
- apache ant 安装_SAP Hybris使用recipe进行安装时,是如何执行ant命令的?
打开Hybris安装文件夹下的recipes,随便打开一个recipe的build.gradle文件,发现使用了installer-platform-plugin和installer-addon-pl ...
- sql sever 2012安装时遇到“试图执行未经授权的操作
sql sever 2012安装时遇到"试图执行未经授权的操作" 这时候打开数据库SQL server2012安装目录的setup.exe,点击然后鼠标右键属性,点击打开然后点安全 ...
- 安装perf后,执行perf命令报错。
系统版本: deepin 下安装perf 按道理来说,咱们通过apt install 安装好之后是可以直接运行perf 命令了,但是.... deepin 安装perf 后,执行perf命令报错: 此 ...
- 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 ...
- jenkins配置中执行 ant 命令时,提示找不到ant 命令
1.在服务器上手动执行ant ,则可以正常执行,但是使用jenkins 构建时却提示无法识别ant命令 查询了相关原因为:jenkins默认情况下执行shell脚本是使用非登录方式,然而非登录方式不会 ...
- php 运行 shell命令行参数,PHP exec()在通过浏览器执行时不会执行shell命令
我有一个PHP脚本,调用exec()执行一个命令,将PDF转换为JPG.此命令在bash中工作正常. 要抢占您的初始故障排除猜测,请注意以下事项: > safe_mode = Off >包 ...
- Mysql安装时mysqld.exe报`应用程序无法正常启动(0xc000007b)`
问题描述 mysql5.7.30解压版安装, 解压之后执行初始化命令, 桌面弹出提示"应用程序无法正常启动(0xc000007b)" 解决办法 查阅资料后, 得知原因是系统dll动 ...
- Ant命令执行build.xml时的参数传递
执行Ant命令时,可以通过-D参数携带参数,传递到执行的XML文件中. ant -f build.xml -Dparam1=value1 -Dparam2=value2 在build.xml中定义参数 ...
- SAP Hybris Accelerator的安装和使用方式
官网链接 进入文件夹<HYBRIS_HOME>/installer,使用cx recipe进行安装: install.bat -r cx -A initAdminPassword=[adm ...
最新文章
- github报错“remote: Support for password authentication was removed on August 13, 2021. Please use a p”
- 理解“动心忍性”的含义
- JDBC修改数据库(Object类的应用)
- WebSocket客户端连接断开后,服务器端的析构处理
- python变量和常量_python 变量与常量 - 刘江的python教程
- 问题十九:怎么模拟ray tracing中漫射材料球体的颜色(diffuse materials)
- HDR概念 (二十八)
- MATLAB实现离散傅里叶变换DFT
- 双击div变成可编辑区的简单实现
- Navigator的正确打开方式
- Python5.操作excel表格 xlrd库与excel的com接口和openpyxl库
- 《富爸爸财务自由之路》阅读笔记
- CS5801|替代LT6711A|HDMI转DP转接线方案|HDMI转DP带供电芯片方案
- 一文读懂C++虚函数的内存模型
- dlink打印服务器重置,DLink_DP310打印服务器用户手册.pdf
- 转:浅谈程序员的英语学习
- 计算机技术+智能化水电站,济南研祥嵌入式技术在水库信息智能化系统中的应用———济南研祥嵌入式技术在水库信息...
- 给新人程序员的 10 点建议
- 自动驾驶2021·谁将引领下一个10年?
- google浏览器不能播放wmv格式视频