如何将Portlet +主题+布局打包到Liferay中的单个WAR / Web应用程序中?

时间:2013-06-03 16:23:00

标签: java java-ee web-applications liferay

ROOT应用程序包含所有描述的项目(经典主题,大约10个布局和众多portlet)。

创建自己的包是否可能或是好的做法?怎么样?

请提示。

2 个答案:

答案 0 :(得分:2)

从理论上讲,可以将一个Portlet,Theme,Layout和Hook的项目打包在一个项目中。

但从维护和开发的角度来看,从四种类型中收集所有这些都不是一种好的做法。

虽然有时你可能在一个项目中有一个portlet和hook,如果它们以某种方式相关,例如你想让一些Listeners将数据添加到你的自定义表,然后你的portlet将提供一个接口来更新或查看该数据,所以在这种情况下,它们是相互依赖的,如果portlet是钩子,那么它是没有用的。所以继续把它们结合起来。

因此,如果4种类型以某种方式相互关联或相互依赖,而不是我看到一个用例来使它们聚集(这将是罕见的)但仍然从维护的角度来看,我宁愿将4分开。至少我会将portlet和主题分开,并且可能有一个Portlet-hook组合和一个主题 - 布局组合,因为它们相互配合得很好,甚至来自维护&发展观点。

以下是您可以做到的方法

  1. 让项目名称为MyCompletePackage-portlet
  2. 如果您使用portlets,项目可以位于plugins-sdk的{​​{1}}文件夹中。
  3. 现在像往常一样添加插件类型特定的东西,例如:
    1. plugins-sdk for hooks
    2. liferay-hook.xml for portlets
    3. liferay-portlet.xml主题
    4. liferay-look-and-feel.xml布局
  4. 对于hook和portlet组合,您不需要修改liferay-layout-templates.xml文件,只需像往常一样进行构建。
  5. 即使是主题和布局组合,您也无需修改build.xml
  6. 但是对于主题和portlet组合,您需要在build.xml中包含特定于主题的内容。
  7. 由于部署人员在项目中查找特定文件,因此会知道您正在部署的所有内容,并会相应地注册它们。
  8. 如果这对你有用或者你遇到任何问题,请告诉我。

    免责声明:我没有尝试过第6点,但它应该可行

答案 1 :(得分:1)

通常会在一次战争中添加所有portlet,以便他们可以毫无问题地访问服务并节省上下文重新加载时间。

然而,由于我们更改了主题,所以使用portlet的主题可能不是一个好主意。因此在更新portlet时需要重新加载。好吧,这是几个月一次,但仍然是一个声明,以保持portlet远离主题战争。