2012-10-24 136 views
4

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

我必须将该类外化以避免在两个portlet中重复相同的代码,并且我想让portlet位于不同的WAR文件中。

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

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

回答

4

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

一个很好的例子是deploy-listener-shareddeploy-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" /> 

希望这有助于!

+0

如何使用Liferay IDE创建客户端或共享项目?你能举个例子吗?谢谢 –

+0

对不起,我不使用Liferay IDE。 –

+0

我浏览过文档,看起来IDE并不支持它。 –

2

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

写你的JAR文件的生成脚本,以便对其进行编译,构建JAR,最后将其复制到以下位置:

{tomcat}/webapps/ROOT/WEB-INF/lib 
  • 然后在portlet打开“Liferay的-插件包。属性“(在Liferay Developer Studio/Liferay IDE中,应该打开一个很好的GUI)。
  • 然后将JAR的名称添加到此文件中的“portal-dependency-jars”列表中,以便在它所需的源代码中(或者只需点击GUI中的“添加”按钮并选择所需的JAR) :

    门户的依赖,罐子= MY-定制lib.jar,我 - 其他 - 定制lib.jar

  • 保存文件,并重新部署的portlet和JAR将跨时被复制该Portlet已部署。

我已经使用这种方法来定制JAR和第三方JAR,我需要在我的portlet中使用它。

0

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

除非一个应用程序依赖于另一个应用程序,否则它完全没问题。

另一个解决方案是使用JRebel工具。它将允许您在不重新启动的情况下在tomcat中重新部署jar。

0

另外,您可能在一个.war中有几个portlet。你可以在portlet.xml中定义它们。

相关问题