天天看點

Liferay7開發文檔_1.4開始子產品開發開始子產品開發

開始子產品開發

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和樣本

注意:主題和布局模闆不是作為子產品建構的。要了解如何建立它們,請參閱主題和布局模闆教程。

以下是子產品開發步驟:

  1. 設定Liferay Workspace
  2. 建立一個module子產品
  3. 建構和部署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!其目錄結構如下圖所示。

Liferay7開發文檔_1.4開始子產品開發開始子產品開發

圖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模闆。

Liferay7開發文檔_1.4開始子產品開發開始子產品開發

圖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

檔案夾中建立。

這裡是子產品工程結構:

  • src/main/java/

     →Java程式包根目錄
  • src/main/resources/content/

     (可選)→語言資源包根目錄
  • src/main/resources/META-INF/resources/

     (可選)→UI模闆的根,例如JSP
  • bnd.bnd

     →指定基本的OSGi子產品清單标題
  • build.gradle

    → 使用Gradle 配置依賴性和更多

下圖顯示了一個MVC Portlet子產品工程。

Liferay7開發文檔_1.4開始子產品開發開始子產品開發

圖3:Liferay子產品使用标準的Maven目錄結構。

示例子產品是另一個有用的開發資源。

使用子產品樣本

從模闆建立子產品的替代方法是生成一個樣本子產品。開發人員可以根據需要檢查或修改示例子產品。

這個指令列出樣本名稱:

blade samples
           

下圖顯示了該清單。

Liferay7開發文檔_1.4開始子產品開發開始子產品開發

圖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任務的通路。

Liferay7開發文檔_1.4開始子產品開發開始子產品開發

圖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.

Liferay7開發文檔_1.4開始子產品開發開始子產品開發

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

繼續閱讀