2012-10-24 63 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中定義它們。

相關問題