SAP Hybris使用recipe进行安装时,是如何执行ant命令的?
打開Hybris安裝文件夾下的recipes,隨便打開一個recipe的build.gradle文件,發(fā)現(xiàn)使用了installer-platform-plugin和installer-addon-plugin這兩個plugin. Groovy setup任務的邏輯,也就是使用這兩個plugin里的實現(xiàn),根據(jù)config實例化platform對象,然后調(diào)用其setup方法和executeAntTarget方法。
這兩個方法的實現(xiàn)源代碼在哪里?這就是本文所要描述的內(nèi)容。
去docs文件夾里可以找到插件的實現(xiàn)源代碼:
到源代碼里根據(jù)executeAntTarget進行搜索:
在AbstractPlatform.groovy里找到了executeAntTarget的實現(xiàn)邏輯,發(fā)現(xiàn)其delegate到了成員屬性antExecutor里:
這個antExecutor的類型是HybrisAntExecutor:
找到HybrisAntExcutor,發(fā)現(xiàn)其只不過是調(diào)用類HybrisPluginUtils的靜態(tài)方法:
靜態(tài)方法之一:runProcess
實現(xiàn)核心:
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.
靜態(tài)方法之二: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的原創(chuàng)文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的SAP Hybris使用recipe进行安装时,是如何执行ant命令的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016中国十大营销策划公司深度解析,供
- 下一篇: cdn加速配置_自己配置cdn(到底什么