遇见CUBA CLI
原文:Meet CLI for CUBA Platform
翻譯:CUBA China ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
CUBA-Platform 官網 :?https://www.cuba-platform.com
CUBA China 官網 :?http://cuba-platform.cn
眾所周知,在軟件開發者的世界,特別是Java開發者,充滿著鍵盤狂人,他們寧愿多敲10-15個字符也不愿點擊一下鼠標。CUBA的社區也沒有例外,所以經常有人問我們,“怎么可以不用CUBA Studio而開始一個新項目呢?” 或者 “有沒有免費輕量級的命令行程序能替代Studio呢?”,有的,這里就有個好消息!
免費的CLI真的能替換收費的Studio嘛?
CLI并不是為了替換Studio,他有自己的使命。對于十分熟悉Spring框架,JPA以及CUBA架構的開發者來說,CLI非常有用。并且(很重要哦!),可以讓他們很舒服的在黑屏幕灰色字塊的環境工作。簡單說,cuba-cli是個命令行工具,可以用它來很容易地創建基于CUBA平臺的項目。以及,它為CUBA項目的主要工件提供輕量級的腳手架代碼,比如entities、screens、services等。
?
但同時,Studio還是作為CUBA世界入門的捷徑,因為它能提供非常直觀的用戶界面。通過直觀的界面,哪怕是沒有接觸過CUBA的新用戶也能很容易的在幾分鐘內設計他自己的第一個應用程序,而且甚至不需要任何JPA/Spring或者其他底層技術的經驗。事實上,對于開發標準的增刪查改的應用程序來說,不需要敲一行代碼,Studio可以替你完成所有的事情。另外,對于從其他框架生態系統移植到CUBA的人還有習慣了在一個非常舒服的IDE開發的人來說,Studio是個不錯的選擇。
總結一下,CUBA Studio更多關注于“邊做邊學”以及“超級省時”,而CLI是為你編寫你討厭而必須的腳手架代碼的苦勞力。
CLI能干什么?
很明顯,首先你要有CLI。CL支持主流的操作系統,這里可以找到各自的安裝向導。裝完后,在命令行敲 cuba-cli ,好了,可以開始新項目或者通過CLI操控現有的項目了。敲tab鍵可以看到所有支持的命令。選擇或者輸入help命令可以看到每個命令的介紹。下面我們介紹下這些命令,看看他們到底是做什么的,以及這些命令怎么節省開發者的時間和延長鍵盤壽命。
通用功能
-
help, version, exit, cd - 這些命令看名字就懂,不介紹了。
項目配置和全局設置
-
create-app - 按照向導完成所有步驟即可創建一個CUBA項目:項目名稱,命名空間,根目錄包名,平臺版本以及數據庫配置。創建的項目包含三個模塊:global(core和web模塊都能訪問),core(服務端層,主要的業務邏輯),web(服務端層,頁面控制器以及其他GUI邏輯)。
-
polymer - 為項目添加基于Polymer的客戶端,Polymer是谷歌開發的前端框架。這個步驟會為新模塊修改 settings.gradle 以及 build.gradle 文件,添加模塊的配置項;還會創建模塊需要的圖片資源,生成登錄頁,菜單欄和其他一些有用的前端web組件。
-
theme - 會在 modules/web 目錄創建一個特殊的目錄結構,添加一些應用默認的品牌圖片(登錄圖標,菜單圖標,favicon)以及一些scss文件,可以修改這些文件更改默認主題。還會在項目添加 webThemesModule 模塊以及在gradle配置文件做相應的修改。最后,這個命令會添加 deployThemes 這個gradle任務,可以運行這個任務部署主題樣式改動而不需要重啟服務。CUBA手冊的這部分做了詳細介紹。
-
add-component - 將一個已有的應用程序組件添加到本項目。這個命令會在build.gradle里面添加一行新的依賴并且修改web模塊的 web.xml 文件將組件的包添加到 appComponents 參數。
領域模型?
-
entity - 為JPA實體創建樁代碼和相應的DDL數據庫腳本。根據實體類型的不同(是否是持久化實體),也會相應的在 persistence.xml 或 metadata.xml 文件注冊實體。最后CLI為實體屬性創建語言包以便用來做本地化。
-
enumeration - 生成實現EnumClass接口的枚舉類型,枚舉字段可以有本地化語言支持,并且有個很有用的方法 fromId。
業務邏輯
-
entity-listener - 創建實現了實體監聽器接口的Spring組件腳手架代碼,并且在相應的實體類中進行聲明。這種監聽器會在實體的狀態發生改變時被觸發。這里有更多的信息。
-
service - 在global模塊創建服務接口,在core模塊創建服務的實現類,也都是腳手架代碼。為了能在web模塊使用服務,也在web-spring.xml 的 WebRemoteProxyBeanCreator bean里面注冊了這個服務。
-
bean - 生成Spring組件,省掉你敲150個字符的時間。
-
config - 指定模塊,指定存儲類型(system,DB或者App),然后創建CUBA配置的接口腳手架代碼。CUBA手冊的這章節詳細介紹了CUBA配置接口的使用。
用戶界面
-
screen - 創建GUI頁面的腳手架代碼。這個命令支持創建:
-
一個新的空頁面
-
擴展已有頁面
-
一個瀏覽頁面:帶有實體列表的頁面,并且有CRUD按鈕以及過濾器。
-
一個編輯頁面:用來創建或者編輯單個實體的頁面。
這個命令會創建xml頁面描述文件、Java控制器的腳手架代碼,也會創建本地化語言包。同時也可以選擇是否將頁面添加到主菜單。
項目gradle任務
-
gradle - 代理執行 gradlew或者gradlew.bat 命令,在gradle命令之后帶上需要執行的參數即可。如果存在gradlew或者gradlew.bat,則會執行相應的命令,否則會顯示找不到相應文件的錯誤。
-
deploy - 這個命令不是真正的部署,需要部署可以通過上面的gradle命令來執行需要的部署任務。這個命令是用來修改build.gradle文件創建war和UberJar的gradle任務。
其他
-
app-component - 將你的CUBA應用程序轉成可插拔的CUBA應用組件。可以在這個文檔找到更多關于此概念的介紹。此命令會生成 app-component.xml 文件,定義了此組件依賴的其他組件,描述了現有的應用模塊、生成的工件以及暴露的應用程序屬性。當運行這個命令時,會提示要求你將現有的模塊前綴修改為唯一的標識符避免在引入多組件時造成命名沖突。如果選擇修改了前綴,那么同時也會修改settings.gradle和build.gradle文件。
-
update-script - 按照CUBA平臺的命名規范和目錄結構創建更新數據庫的SQL腳本文件。CUBA平臺會在應用啟動的時候有相應的機制來執行這些腳本,腳本會按照創建的時間順序執行,從最老的到最新的。所以為了保證這種順序,腳本存放的目錄和文件名有特殊的規范:目錄是 modules/core/db/update/{USED DATABASE}/{yy}/,文件名按照 {yyMMdd}-{INCREMENT}-{SCRIPT NAME}.sql 的格式。
-
custom-template - 從開發者定義的Apache Velocity模板文件生成項目文件。通過模板機制可以無需編譯而通過聲明式的方式擴展CLI命令。從這里了解更多的CLI模板引擎功能。
-
change-prefix - 在開發add-on的時候可以通過這個命令修改模塊的前綴,以避免add-on在集成是發生命名沖突。
-
premium-repo - 在項目的build.gradle中添加 premium 倉庫。
-
idea - 通過Intellij IDEA 打開項目。
從上面這些功能可以看出來,CLI在開發過程中為開發者承擔了很多不可避免的繁瑣的工作。
可擴展性
首先,上面已經提到了,CLI提供了模板引擎,可以不需要更改CLI的源碼,不需要編譯,只通過配置來擴展CLI的命令。CLI模板由下面兩部分組成:
template.xml 文件,里面聲明了一些自定義命令需要詢問的問題。
一組文件(xml,java,或者其他格式),里面有Apache Velocity腳本,所以可以通過Velocity模板引擎處理。template.xml 里面問題的答案會以參數的方式傳遞給Velocity腳本。
這個wiki 網頁詳細介紹了CLI模板。
其次,CLI也提供了自定義插件的接入點,可以加載自定義插件并且將CLI事件返回給插件進行處理。通過這個機制,開發者可以創建自己的新命令或者擴展已有命令,因而具有極大的靈活性。例如,可以給screen命令添加另一個選項,比如lookup。這里有文檔和CLI插件的開發向導。
最后,CUBA CLI也是開源項目,可以在GitHub上找到源碼。
結論
以上談到的這些只是CLI的起點,我們希望CLI能使得開發過程更加熟練,更加快速,特別是在不使用CUBA Studio的情況下。接下來,我們會進一步提升CLI的能力,并且已經有roadmap了。里面有第二版將要添加的功能。
作為本文的結論,我想分享一下個人的建議。如果用CLI開啟你的第一個CUBA項目的話,不是那么容易理解和評估平臺的能力。CUBA Studio有30天免費試用,所以如果你或者你的同事對平臺很陌生,建議使用CUBA Studio作為入口,在Studio中對平臺進行操作和理解平臺的功能。然后在免費試用結束后,再決定是要繼續購買Studio還是說可以直接用CLI了。
最后,可以在youtube觀看CLI demo。
P.S. 噢,差點忘了提一句,CLI是用Kotlin寫的,這是我們第一次把這個語言用在了生產環境,目前看還不錯!
?
歡迎關注CUBA 中國公眾號
?
轉載于:https://www.cnblogs.com/cubacn/p/10007924.html
總結
以上是生活随笔為你收集整理的遇见CUBA CLI的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从IT时代转入DT时代 安防应该注意什么
- 下一篇: BIOS实战之读写逻辑设备(SIO)