8

我需要一些对三个不同的 Liferay portlet 通用的实用程序类,所以我将在一个项目中开发它们,应该为我的 portlet 共享。

我正在使用带有 Liferay IDE 插件的 Eclipse,我的问题是我需要什么样的项目?

我的意思是它是一个简单的 Java 项目还是任何类型的 Liferay 项目?

4

1 回答 1

15

有几种方法可以做到这一点:

  1. 创建一个简单的 Java 项目。将其打包为 JAR 文件。将 JAR 文件放在全局类路径中 如果是 tomcat,全局类路径将是../tomcat-7.0.27/lib/ext/.
  2. 创建一个简单的 Java 项目。将其打包为 JAR 文件。将 JAR 文件放在每个 portlet 的类路径中。
  3. 使用 service-builder 创建一个 Liferay plugin-portlet,将实用程序类放入service包中,以便实用程序类进入[name-of-your-project]-service.jar. 然后在每个 portlet 的 portlet which would need these classes specify the propertyrequired-deployment-contexts=[name-of-your-project] inliferay-plugin-package.properties` 中。
  4. 使用 service-builder 创建一个 Liferay 插件-portlet,将实用程序类放入service包中,以便实用程序类进入,[name-of-your-project]-service.jar然后将其[name-of-your-project]-service.jar放入全局类路径中,并将其从WEB-INF/lib您的 portlet 项目中删除,这样它就不会冲突。

结论

  • 如果实用程序类中的代码不依赖于 Liferay API,请使用第一种方法。但这需要每次实用程序类发生更改时重新启动服务器。也可以使用 Utility 类,Hooks因为它位于全局类路径中
  • 如果实用程序类中的代码不依赖于 Liferay API,请使用第二种方法。这不需要重新启动服务器。但是实用程序类中的任何更改都需要您构建和部署所有使用此 jar 的 plugin-portlet。
  • 第三种方法:这与第二种方法具有相同的限制或功能,只是您可以在实用程序类中使用 Liferay API 和您的自定义服务 API。
  • 第四种方法:这与第一种方法具有相同的限制或功能,只是您可以在实用程序类中使用 Liferay API 和您的自定义服务 API。

因此,我在这里列出了利弊,供您自行决定。我很想知道专家在liferay中是否有更多方法(和更清洁)来做到这一点。

于 2013-01-18T07:53:28.620 回答