開始子產品開發
Liferay Portal子產品開發:
- 建立檔案夾結構:良好的檔案夾結構有助于演變和維護代碼,特别是多人協作。這裡使用開發人員熟悉的預定義檔案夾結構。
- 編寫代碼和配置檔案:manifest清單,Java類,資源,以及子產品,讓開發人員專注于實作業務邏輯。
- 編譯:擷取依賴關系并構模組化塊。管理依賴關系的常見建構工具包括Gradle,Maven和Ant / Ivy。
- 部署:與運作時環境互動以安裝,監控和修改子產品。
在Liferay Portal上開發子產品有幾個很好的建構工具。本教程示範使用Liferay Workspace建立一個新子產品。這是Liferay提供,以Gradle和BndTools為基礎的建構環境,它簡化了子產品開發并将其大部分自動化。
注意:Liferay支援開發人員選擇自己的建構工具。除了Liferay Workspace外,Liferay還為Maven和Gradle提供了良好支援。以下教程和示例示範了在這些環境中進行開發。
- Maven教程和示例
- Liferay IDE中的Gradle和樣本
注意:主題和布局模闆不是作為子產品建構的。要了解如何建立它們,請參閱主題和布局模闆教程。
以下是子產品開發步驟:
- 設定Liferay Workspace
- 建立一個module子產品
- 建構和部署module子產品
完成本教程後,您将建立一個module子產品并将其作為本地Liferay Portal bundle部署。
設定LIFERAY WORKSPACE
使用稱為Blade CLI(Blade刀片)的工具建立和配置Liferay Workspace(工作區)非常簡單。Blade是一種指令行工具,可建立Workspaces并執行常見任務。
請按照 this tutorial to install Blade安裝Blade。
該
blade
在目前系統路徑執行。
您可以通過執行以下指令在目前目錄中建立一個Workspace:
blade init <workspaceName>
你已經建立了一個Workspace!其目錄結構如下圖所示。
圖1:Liferay Workspace包含了所有工程,這樣他們都可以利用Gradle建構環境。
Workspace可以配置為在本地檔案系統的任何位置使用Liferay Portal installation bundle。
gradle.properties檔案的
liferay.workspace.home.dir
屬性将預設bundle位置設定為檔案夾
<workspace>/bundles
(尚未建立)。為了友善,建議在那裡 install a Liferay Portal bundle。如果您将其安裝到其他位置,請取消注釋該
liferay.workspace.home.dir
屬性并将其設定為具體位置。
注意:Liferay IDE中的使用者界面允許開發人員建立和導入Liferay Workspace工程。
要建立工程,請按照教程使用Liferay IDE建立Liferay Workspace工程。
導入工程,use the wizard from File→Import→Liferay→Liferay Workspace Project。
工作區已準備好建立子產品。
建立一個MODULE子產品
Blade提供module templates 和 module samples。模闆為不同類型的子產品提供存根檔案。樣本可以在Workspace中生成并示範不同類型module。開發人員可以使用模闆和樣本來開發子產品。
使用子產品模闆
Blade指令
blade create -l
列出module模闆。
圖2:Blade的
create
指令根據模闆生成一個子產品。執行
create -l
列出模闆名稱。
注意:Liferay IDE的子產品向導允許開發人員為他們的子產品工程選擇一個模闆。有關詳細資訊,請參閱教程使用Liferay IDE建立子產品。
以下是建立子產品的指令文法:
blade create [options] moduleName
module模闆及其選項的說明在這裡。
以下是建立Liferay MVC Portlet子產品的示例:
blade create -t mvc-portlet -p com.liferay.docs.mymodule -c MyMvcPortlet my-module
子產品工程預設在
modules
檔案夾中建立。
這裡是子產品工程結構:
-
→Java程式包根目錄src/main/java/
-
(可選)→語言資源包根目錄src/main/resources/content/
-
(可選)→UI模闆的根,例如JSPsrc/main/resources/META-INF/resources/
-
→指定基本的OSGi子產品清單标題bnd.bnd
-
→ 使用Gradle 配置依賴性和更多build.gradle
下圖顯示了一個MVC Portlet子產品工程。
圖3:Liferay子產品使用标準的Maven目錄結構。
示例子產品是另一個有用的開發資源。
使用子產品樣本
從模闆建立子產品的替代方法是生成一個樣本子產品。開發人員可以根據需要檢查或修改示例子產品。
這個指令列出樣本名稱:
blade samples
下圖顯示了該清單。
圖4:該
blade samples
指令列出了開發人員可以建立,檢查和修改以滿足其需求的示例子產品的名稱。
以下是Blade樣本指令文法:
blade samples <sampleName>
它在目前檔案夾的子檔案夾中建立示例工程。
建構一個子產品并将其部署到Liferay Portal非常簡單。
建構和部署子產品
Liferay Workspace提供了用于建構和部署子產品的Gradle任務。Blade的
blade gw
指令解決了Gradle工程中的一個常見需求:從任何工程目錄調用Gradle wrapper。您可以使用
blade gw
,就像調用
gradlew
一樣,而無需指定wrapper路徑。
注:對于更簡單的Gradle wrapper指令,請安裝gw。
(sudo) jpm install [email protected]
用法:
gw <task>
在子產品檔案夾中,執行以下指令列出可用的Gradle任務:
blade gw tasks
Workspace使用BndTools生成子產品的OSGi
MANIFEST.MF
檔案并将其打包到子產品JAR中。要編譯子產品并生成子產品JAR,請執行
jar
Gradle任務:
blade gw jar
生成的JAR位于子產品工程的
build/libs
檔案夾中,并準備部署到Liferay Portal。
如果您尚未啟動Liferay Portal伺服器,請啟動它。
提示:要打開一個新的終端視窗和Workspace的Liferay Portal伺服器(與Tomcat或JBoss / Wildfly捆綁在一起),請執行以下指令:
blade server start -b
Blade可以将子產品部署到任何本地Liferay Portal伺服器。它使用Felix Gogo shell與Liferay Portal的OSGi架構進行通信,并使用Felix File Install指令将子產品直接部署到OSGi容器。該指令使用預設端口
11311
。
要部署子產品,請執行以下指令:
blade deploy
Blade還允許開發人員在目前檔案夾樹中部署所有子產品。例如,要在Workspace的子產品檔案夾中部署所有子產品,在
<workspace>/modules
檔案夾中執行
blade deploy
。
如果您使用的是Liferay IDE,則可以将子產品從Package Explorer拖放到Liferay Portal伺服器上進行部署。IDE還提供對Liferay Workspace Gradle任務的通路。
圖5:Liferay IDE允許開發人員使用拖放功能部署子產品。
注意:使用Blade CLI将子產品部署到Liferay Portal時,該子產品直接安裝到Liferay Portal的OSGi容器中。這意味着該子產品在Liferay Portal中的存儲方式與複制到
LIFERAY_HOME/deploy
檔案夾中的方式不同。有關更多資訊,請參閱“ 使用Blade CLI部署子產品”教程。
Once you’ve deployed a portlet module, it’s available in the Liferay Portal UI under the application category and name you specified via the portlet component’s
com.liferay.portlet.display-category
and
javax.portlet.display-name
properties in the
@Component
annotation.
Figure 6: Here’s a bare-bones portlet based on one of Liferay’s module templates.
自動重新部署子產品更改
Blade允許開發人員對子產品工程的output檔案進行watch。如果它們被修改,Blade會自動重新部署子產品。要在部署時設定watch,請在子產品工程中執行以下指令:
blade deploy -w
以下com.liferay.docs.mymodule子產品的部署輸出(帶watch):
E:\workspaces\my-liferay-workspace\modules\my-module-project>blade deploy -w
:modules:my-module-project:compileJava UP-TO-DATE
:modules:my-module-project:buildCSS UP-TO-DATE
:modules:my-module-project:processResources UP-TO-DATE
:modules:my-module-project:transpileJS SKIPPED
:modules:my-module-project:configJSModules SKIPPED
:modules:my-module-project:classes UP-TO-DATE
:modules:my-module-project:jar UP-TO-DATE
:modules:my-module-project:assemble UP-TO-DATE
:modules:my-module-project:build
BUILD SUCCESSFUL
Total time: 2.962 secs
install file:/E:/workspaces/my-liferay-workspace/modules/my-module-project/build/libs/com.liferay.docs.mymodule-1.0.0.jar
Bundle ID: 505
start 505
Scanning E:\workspaces\my-liferay-workspace\modules\my-module-project
...
Waiting for changes to input files of tasks... (ctrl-d then enter to exit)
blade deploy -w
指令的輸出訓示子產品已安裝并啟動,報告子產品的OSGi bundle ID,并在子產品output檔案更改時重新部署子產品。
相關文章
Configuring Dependencies
Liferay Workspace
Tooling
OSGi Basics for Liferay Development
Portlets