2

我有一个现有 portlet 的来源。我对其进行了一些更改以修复一些错误,现在我需要将固定源部署到 liferay。我使用工件选项构建战争文件并像往常一样部署这个战争文件。但是我仍然无法在页面上添加我的 portlet,因为我没有在列表中看到它。我究竟做错了什么?

如果重要的话,我会使用 Idea 11.1 和 liferay 6.0.6。

似乎是战争文件错误的问题,因为其他战争文件(我自己没有编译)已成功部署。

而且,如果我在构建工件时创建了战争文件很重要,请不要使用 Ant。


日志:

09:37:09,430 INFO  [PortletAutoDeployListener:71] Copying portlets for D:\odesk_work\liferay\liferay-portal-6.0.6\deploy\Comply-Activities-portlet-6.0.5.2.war
  Expanding: D:\odesk_work\liferay\liferay-portal-6.0.6\deploy\Comply-Activities-portlet-6.0.5.2.war into D:\odesk_work\liferay\liferay-portal-6.0.6\tomcat-6.0.29\temp\20120409093709483
  Copying 1 file to D:\odesk_work\liferay\liferay-portal-6.0.6\tomcat-6.0.29\temp\20120409093709483\WEB-INF
  Copying 1 file to D:\odesk_work\liferay\liferay-portal-6.0.6\tomcat-6.0.29\temp\20120409093709483\WEB-INF\classes
  Copying 1 file to D:\odesk_work\liferay\liferay-portal-6.0.6\tomcat-6.0.29\temp\20120409093709483\WEB-INF\classes
  Copying 1 file to D:\odesk_work\liferay\liferay-portal-6.0.6\tomcat-6.0.29\temp\20120409093709483\META-INF
  Copying 119 files to D:\odesk_work\liferay\liferay-portal-6.0.6\tomcat-6.0.29\webapps\Comply-Activities-portlet
  Copying 1 file to D:\odesk_work\liferay\liferay-portal-6.0.6\tomcat-6.0.29\webapps\Comply-Activities-portlet
  Deleting directory D:\odesk_work\liferay\liferay-portal-6.0.6\tomcat-6.0.29\temp\20120409093709483
09:37:12,456 INFO  [PortletAutoDeployListener:81] Portlets for D:\odesk_work\liferay\liferay-portal-6.0.6\deploy\Comply-Activities-portlet-6.0.5.2.war copied successfully. Deployment will start in a few seconds.

看起来它在部署时崩溃了。因为当我尝试部署有效的 portlet 时,日志中有一些额外的信息,比如

09:13:37,874 INFO  [PortletHotDeployListener:220] Registering portlets for Comply-Activities-portlet
09:13:37,976 INFO  [PortletHotDeployListener:369] 1 portlet for Comply-Activities-portlet is available for use

UPD:也许有人会指导我如何正确构建 *.war?我认为这就足够了。

4

3 回答 3

1

确保liferay-display.xmlWEB-INF你的战争目录中并且它的内容是好的。

它应该包含如下内容:

<?xml version="1.0"?>
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 5.2.0//EN"     "http://www.liferay.com/dtd/liferay-display_5_2_0.dtd">

<display>
<category name="${liferay.category}">
    <portlet id="yourPortletID" />
    <portlet id="yourPortletID2" />
            <!-- more portlet ids -->
</category>
</display>

也许构建系统在创建战争时缺少它。

如果没有,请手动将其放在那里,看看是否有效。

编辑

行。现在有了更多信息,看起来你正在servlet-api参与你的战争。该 jar(以及其中的类)由门户提供(或者,更具体地说,由 servlet 容器提供)。也是如此portlet-api。您不应将它们包含在已部署的应用程序中。

<scope>provided</scope>检查是否在 pom.xml中指定了这些依赖项。

于 2012-04-08T23:38:57.260 回答
0

首先尝试从 bundles/tomcat/webapps 取消部署 portlet - 删除 portlet 目录。然后再次部署 portlet。

于 2012-04-08T22:04:25.997 回答
0

用 ant 构建项目,创建战争,现在它可以工作了。但也许不使用 ant 就可以做到这一点,只需要使用 IDEA。我需要检查一下。

于 2012-04-09T13:43:30.840 回答