Liferay7开发文档_1.4开始模块开发

原创
2018/04/26 21:07
阅读数 555

开始模块开发

Liferay Portal模块开发:

  • 创建文件夹结构:良好的文件夹结构有助于演变和维护代码,特别是多人协作。这里使用开发人员熟悉的预定义文件夹结构。
  • 编写代码和配置文件:manifest清单,Java类,资源,以及模块,让开发人员专注于实现业务逻辑。
  • 编译获取依赖关系并构建模块。管理依赖关系的常见构建工具包括Gradle,Maven和Ant / Ivy。
  • 部署:与运行时环境交互以安装,监控和修改模块。

在Liferay Portal上开发模块有几个很好的构建工具。本教程演示使用Liferay Workspace创建一个新模块。这是Liferay提供,以Gradle和BndTools为基础的构建环境,它简化了模块开发并将其大部分自动化。

注意:Liferay支持开发人员选择自己的构建工具。除了Liferay Workspace外,Liferay还为Maven和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!其目录结构如下图所示。

起始模块-DEV-工作空间structure.png

图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模板。

起始模块-DEV-叶片templates.png

图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模块工程。

起始模块-DEV-模块structure.png

图3:Liferay模块使用标准的Maven目录结构。

示例模块是另一个有用的开发资源。

使用模块样本

从模板创建模块的替代方法是生成一个样本模块。开发人员可以根据需要检查或修改示例模块。

这个命令列出样本名称:

blade samples

下图显示了该列表。

起始模块-DEV-叶片samples.png

图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,请执行jarGradle任务:

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任务的访问。

启动模块-DEV-拖module.png

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

starting-module-dev-portlet.png

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

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
在线直播报名
返回顶部
顶部