【问题标题】:How to pack portlet+theme+layout into single WAR/web application in Liferay?如何在 Liferay 中将 portlet+theme+layout 打包到单个 WAR/web 应用程序中?
【发布时间】:2013-06-03 16:23:00
【问题描述】:

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

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

请给个提示。

【问题讨论】:

  • 理论上我认为这是可能的。但是,如果您将 portlet、主题和布局打包在单独的 .war 文件中,则维护起来会容易得多。

标签: java jakarta-ee web-applications liferay


【解决方案1】:

理论上,一个项目可以包含一个 Portlet、主题、布局和一个 Hook。

但是从维护和开发的角度来看,将所有四种类型放在一起根本不是一个好的做法。

虽然有时您可能有一个 portlet 并在一个项目中挂钩,如果它们以某种方式相关,例如您希望有一些侦听器将数据添加到您的自定义表,然后您的 portlet 将提供一个接口来更新或查看该数据,因此在这种情况下,它们是相互依赖的,如果 portlet 发生故障,则挂钩将毫无用处。所以继续把它们结合起来吧。

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

你可以这样做

  1. 让项目名称为MyCompletePackage-portlet
  2. 如果您使用的是plugins-sdk,该项目可以位于plugins-sdkportlets 文件夹中。
  3. 现在像往常一样添加特定于插件类型的内容,例如:
    1. liferay-hook.xml 用于钩子
    2. liferay-portlet.xml 用于 portlet
    3. liferay-look-and-feel.xml 主题
    4. liferay-layout-templates.xml 用于布局
  4. 对于 hook 和 portlet 组合,您无需修改​​ build.xml 文件,只需像往常一样构建即可。
  5. 即使是主题和布局组合,您也无需修改build.xml
  6. 但对于主题和 portlet 组合,您需要在 build.xml 中包含特定于主题的内容。
  7. 由于部署程序会在项目中查找特定文件,因此它会知道您正在部署的所有内容并相应地注册它们。

让我知道这是否适合您或您是否遇到任何问题。

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

【讨论】:

    【解决方案2】:

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

    但是,带有 portlet 的主题可能不是一个好主意,因为我们更改了主题......因此在更新 portlet 时重新加载是不必要的。好吧,这是几个月一次,但仍然是让 portlet 远离主题战争的声明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      相关资源
      最近更新 更多