开始模块开发
Liferay Portal模块开发:
- 创建文件夹结构:良好的文件夹结构有助于演变和维护代码,特别是多人协作。这里使用开发人员熟悉的预定义文件夹结构。
- 编写代码和配置文件:manifest清单,Java类,资源,以及模块,让开发人员专注于实现业务逻辑。
- 编译:获取依赖关系并构建模块。管理依赖关系的常见构建工具包括Gradle,Maven和Ant / Ivy。
- 部署:与运行时环境交互以安装,监控和修改模块。
在Liferay Portal上开发模块有几个很好的构建工具。本教程演示使用Liferay Workspace创建一个新模块。这是Liferay提供,以Gradle和BndTools为基础的构建环境,它简化了模块开发并将其大部分自动化。
注意:Liferay支持开发人员选择自己的构建工具。除了Liferay Workspace外,Liferay还为Maven和Gradle提供了良好支持。以下教程和示例演示了在这些环境中进行开发。
注意:主题和布局模板不是作为模块构建的。要了解如何创建它们,请参阅主题和布局模板教程。
以下是模块开发步骤:
完成本教程后,您将创建一个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
文件夹中创建。
这里是模块工程结构:
src/main/java/
→Java程序包根目录src/main/resources/content/
(可选)→语言资源包根目录src/main/resources/META-INF/resources/
(可选)→UI模板的根,例如JSPbnd.bnd
→指定基本的OSGi模块清单标题build.gradle
→ 使用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 gw@1.0.1
用法: 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文件更改时重新部署模块。
相关文章
OSGi Basics for Liferay Development