Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Liferay-在2个不同的portlet之间共享UTIL类_Liferay_Share_Portlet - Fatal编程技术网

Liferay-在2个不同的portlet之间共享UTIL类

Liferay-在2个不同的portlet之间共享UTIL类,liferay,share,portlet,Liferay,Share,Portlet,我正在开发一个Liferay应用程序,由两个不同的portlet组成,它们都必须共同进行某些操作,因此我决定将这些操作放在外部Utils类的静态方法中 我必须将该类外部化,以避免在两个Portlet中重复相同的代码,并且我希望Portlet位于不同的WAR文件中 我知道我可以将Utils类打包到一个JAR文件中,但我们仍在开发中,我们不想重新生成JAR并为每次更改重新启动Tomcat 哪一个是最好的选择,我如何执行它?如果您使用的是Liferay SDK,您可以使用客户端(最近更改为共享)目录来

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

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

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


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

如果您使用的是Liferay SDK,您可以使用
客户端
(最近更改为
共享
)目录来放置您的通用代码

一个很好的例子是如何与结合使用

从外观上看,您需要做的所有配置就是修改将使用client\shared类的
build.xml
文件。如果查看DeployListenerHook的定义,您可以看到需要添加的只是

对于新SDK:


对于较旧的SDK:



希望这有帮助

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

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

{tomcat}/webapps/ROOT/WEB-INF/lib
  • 然后在portlet中打开“liferay plugin package.properties”(在liferay Developer Studio/liferay IDE中,应该使用一个漂亮的GUI打开)
  • 然后将JAR的名称添加到此文件中的“门户依赖项JAR”列表中,以便在源代码中使用它(或者只需点击GUI中的“添加”按钮并选择所需的JAR):

    门户依赖项jars=my-custom-lib.jar,my-other-custom-lib.jar

  • 保存文件,并重新部署portlet,部署portlet时将复制JAR


我已经将此方法用于定制jar和我需要在Portlet中使用的第三方jar。

对于开发阶段,只需将jar文件与这两个应用程序打包

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


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

而且您可能在一个.war中有多个portlet。您可以在
portlet.xml

中定义它们,我如何使用Liferay IDE创建客户机或共享项目?你能给我举个例子吗?谢谢,我没有使用Liferay IDE。我已经浏览了文档,但似乎IDE不支持它。