91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SAP Hybris使用recipe進行安裝時,是如何執行ant命令的?

發布時間:2020-08-14 16:32:36 來源:ITPUB博客 閱讀:242 作者:i042416 欄目:編程語言

打開Hybris安裝文件夾下的recipes,隨便打開一個recipe的build.gradle文件,發現使用了installer-platform-plugin和installer-addon-plugin這兩個plugin. Groovy setup任務的邏輯,也就是使用這兩個plugin里的實現,根據config實例化platform對象,然后調用其setup方法和executeAntTarget方法。


SAP Hybris使用recipe進行安裝時,是如何執行ant命令的?


這兩個方法的實現源代碼在哪里?這就是本文所要描述的內容。

去docs文件夾里可以找到插件的實現源代碼:


SAP Hybris使用recipe進行安裝時,是如何執行ant命令的?


到源代碼里根據executeAntTarget進行搜索:


SAP Hybris使用recipe進行安裝時,是如何執行ant命令的?


在AbstractPlatform.groovy里找到了executeAntTarget的實現邏輯,發現其delegate到了成員屬性antExecutor里:


SAP Hybris使用recipe進行安裝時,是如何執行ant命令的?


這個antExecutor的類型是HybrisAntExecutor:


SAP Hybris使用recipe進行安裝時,是如何執行ant命令的?


找到HybrisAntExcutor,發現其只不過是調用類HybrisPluginUtils的靜態方法:


SAP Hybris使用recipe進行安裝時,是如何執行ant命令的?


靜態方法之一: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


SAP Hybris使用recipe進行安裝時,是如何執行ant命令的?


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命令的?

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

察雅县| 宁津县| 寿宁县| 潞西市| 九龙县| 汪清县| 和政县| 宜丰县| 牡丹江市| 甘德县| 黔西县| 资源县| 介休市| 澄城县| 黑河市| 洪泽县| 鹤壁市| 新兴县| 遂平县| 松潘县| 万源市| 平乡县| 柳林县| 长兴县| 吕梁市| 卢湾区| 和政县| 宣汉县| 永吉县| 涞源县| 同江市| 秀山| 怀来县| 环江| 宁阳县| 新竹市| 万山特区| 延长县| 南皮县| 清水县| 阜新市|