【问题标题】:Liferay - Share Utils class between 2 different portletsLiferay - 在 2 个不同的 portlet 之间共享 Utils 类
【发布时间】:2012-10-24 14:37:13
【问题描述】:

我正在开发一个 Liferay 应用程序,由 2 个不同的 portlet 组成,两者都必须进行某些共同的操作,因此我决定将这些操作放在外部 Utils 类中的静态方法中。

我必须将该类外部化以避免在两个 portlet 中重复相同的代码,并且我希望将 portlet 放在不同的 WAR 文件中。

我知道我可以将 Utils 类打包到 JAR 文件中,但我们仍在开发中,我们不想为每次更改重新生成 JAR 并重新启动 Tomcat。

哪个是最好的选择,我该如何执行?

【问题讨论】:

    标签: liferay share portlet


    【解决方案1】:

    如果您使用的是 Liferay SDK,您可以使用clients(最近更改为shared)目录来放置您的常用代码。

    一个很好的例子是deploy-listener-shared 如何与deploy-listener-hook 结合使用。

    从外观上看,您需要做的所有配置就是修改将使用客户端\共享类的build.xml 文件。如果您查看 deploy-listener-hook 的 build file,您可以看到您需要添加的只是。

    对于新的 SDK:

    <property name="import.shared" value="my-utils-shared" />
    

    对于旧版 SDK:

    <property name="dependent.clients" value="my-utils-client" />
    

    希望这会有所帮助!

    【讨论】:

    • 我如何使用 Liferay IDE 创建客户端或共享项目?你能给我一个例子吗?谢谢
    • 对不起,我没有使用 Liferay IDE。
    • 我查看了文档,IDE 似乎不支持它。
    【解决方案2】:

    还有另一种方法涉及构建 JAR 文件,但它不需要重新启动服务器(至少在 Tomcat 上)。

    为您的 JAR 文件编写构建脚本,以便编译、构建 JAR 并最终将其复制到以下位置:

    {tomcat}/webapps/ROOT/WEB-INF/lib
    
    • 然后在您的 portlet 中打开“liferay-plugin-package.properties”(在 Liferay Developer Studio/Liferay IDE 中,这应该会以漂亮的 GUI 打开)。
    • 然后将 JAR 的名称添加到此文件中的“portal-dependency-jars”列表中,以便在它想要的源中(或者只需点击 GUI 中的“添加”按钮并选择所需的 JAR):

      portal-dependency-jars=my-custom-lib.jar,my-other-custom-lib.jar

    • 保存文件,然后重新部署 portlet,JAR 将在 portlet 部署时被复制。

    我已将此方法用于自定义 JAR 和需要在我的 portlet 中使用的第 3 方 JAR。

    【讨论】:

      【解决方案3】:

      对于开发阶段,只需将 jar 文件与两个应用程序一起打包即可。

      除非一个应用程序以某种方式依赖于另一个应用程序,否则它是完全可以的。

      另一个解决方案是使用 JRebel 工具。它将允许您在 tomcat 中重新部署 jar 而无需重新启动。

      【讨论】:

        【解决方案4】:

        您也可以在一个.war 中拥有多个portlet。您可以在portlet.xml 中定义它们。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多