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的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2704700/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 Recipe 安裝 SAP Commerce CloudCloud
- Dynamics CRM 如何使用命令列進行安裝命令列
- 使用指令碼進行 SAP Spartacus 安裝工作指令碼
- Android Studio 使用vivo手機真機執行時安裝spk安裝包總是安裝失敗Android
- SAP Netweaver和Hybris Commerce啟動後執行的預設操作
- 使用jconsole監測SAP commerce執行時
- linux 安裝dotnet 8.0執行時Linux
- 如何進行Apache的編譯安裝Apache編譯
- 如何測試Linux命令執行時間?Linux
- gops 是怎麼和 Go 的執行時進行互動的?Go
- Golang 使用執行命令帶管道符執行的方法Golang
- 使用bat指令碼執行MySQL命令時遇到的坑BAT指令碼MySql
- 使用Miniconda安裝pytorch與Vscode執行PyTorchVSCode
- SQL是如何執行的SQL
- python中的pip的安裝以及通過pip命令對selenium進行解除安裝和安裝Python
- SAPGUI 裡執行的老程式,如何對新的 SAP Fiori Belize Theme 進行適配?GUI
- 如何在LInux上安裝並執行JenkinsLinuxJenkins
- Kibana安裝與執行
- SAP CRM WebClient UI和Hybris的controller是如何被呼叫的WebclientUIController
- c++是如何執行的C++
- sql更新是如何執行的?SQL
- 使用SAP API portal進行SAP SuccessFactors的API測試API
- 如何使用 mock 資料在本地執行 SAP Fiori ElementsMock
- 指定特定的jdk進行安裝JDK
- Ant安裝
- Linux 定時執行指令碼、命令Linux指令碼
- Linux命令執行時間測試Linux
- 使用SAP BSP應用執行VueVue
- 執行緒池中多餘的執行緒是如何回收的?執行緒
- CMD執行命令列時卡住的問題命令列
- 單執行緒的JS如何實現多個互動同時進行執行緒JS
- 在 Ubuntu 上安裝 .NET SDK 或 .NET 執行時Ubuntu
- Alpine容器安裝執行ssh
- Java Main 如何是如何被執行的?JavaAI
- Kibana,Logstash 和 Cerebro 的安裝執行
- 使用 SAP UI5 CLI 命令列工具構建和執行 SAP UI5 應用UI命令列
- 將軟體整合到 Windows 映像中並進行靜默安裝,可以使用 DISM 和適當的安裝程式命令。下面是具體的步驟和示例命令。Windows
- SAP UI5 應用的 Component.js 檔案是如何在執行時被載入的?UIJS