Java 如何打包portlet+;主题+;Liferay中单个WAR/web应用程序的布局?

Java 如何打包portlet+;主题+;Liferay中单个WAR/web应用程序的布局?,java,jakarta-ee,web-applications,liferay,Java,Jakarta Ee,Web Applications,Liferay,ROOT应用程序包含所描述的所有项目(经典主题、大约10个布局和许多portlet) 这样创建自己的包是可能的还是良好的做法?怎么做 请给出一个提示。通常情况下,人们会在一场战争中添加所有Portlet,以便它们可以毫无问题地访问服务,并节省重新加载上下文的时间 然而,由于我们改变了主题,所以使用Portlet的主题可能并不总是一个好主意。。因此,在更新portlet时,在不必要的情况下重新加载portlet。好吧,这是每月一次,但仍然是一个声明,以保持Portlet远离战争主题 理论上,一个项

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

这样创建自己的包是可能的还是良好的做法?怎么做


请给出一个提示。

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


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

理论上,一个项目可以包含一个Portlet、主题、布局和一个钩子,所有这些都打包在一个项目中

但是,从维护和开发的角度来看,将这四种类型结合在一起并不是一种好的做法

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

因此,如果这4种类型以某种方式相互关联或相互依赖,那么我认为将它们结合在一起是一个用例(这将是罕见的),但从维护的角度来看,我宁愿将这4种类型分开。至少我会将Portlet和主题分开,并且可能有一个Portlet挂钩组合和一个主题布局组合,因为即使从维护和开发的角度来看,它们也很好地结合在一起

以下是您的操作方法

  • 让项目名称为MyCompletePackagePortlet
  • 如果您使用的是
    pluginsdk
    ,则项目可以位于
    pluginsdk
    portlets
    文件夹中
  • 现在像往常一样添加插件类型特定的内容,如:
  • liferayhook.xml
    用于钩子
  • liferayportlet.xml
    用于portlet
  • 主题的liferay外观.xml
  • 布局的liferay布局模板.xml
  • 对于钩子和portlet的组合,您不需要修改
    build.xml
    文件,只需像平常一样构建即可
  • 即使对于主题和布局组合,也不需要修改
    build.xml
  • 但对于主题和portlet的组合,您需要在
    build.xml
    中包含特定于主题的内容
  • 由于部署人员在项目中查找特定文件,因此它将知道您正在部署的所有内容,并将相应地注册它们
  • 让我知道这是否适合你,或者你是否面临任何问题


    免责声明:我还没有尝试过第6点,但它应该能起作用

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