我有一个现有portlet的来源。我改变了一点来修复一些错误,现在我需要将固定的源部署到liferay。我使用工件选项构建war文件并像往常一样部署此war文件。但我仍然无法在页面上添加我的portlet,因为我没有在列表中看到它。我做错了什么?
如果重要的话,我会使用Idea 11.1和liferay 6.0.6。
似乎错误的war文件有问题,因为其他war文件(我自己没编译)已成功部署。
而且,如果重要的是我在构建工件时创建了war文件,并且不使用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
答案 0 :(得分:1)
确保liferay-display.xml
位于战争中的WEB-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
也是如此。您不应将它们包含在已部署的应用程序中。
检查pom.xml中是否将这些依赖项指定为<scope>provided</scope>
。
答案 1 :(得分:0)
首先尝试从bundles / tomcat / webapps取消部署portlet - 删除portlet目录。然后再次部署portlet。
答案 2 :(得分:0)
使用ant构建项目,创建战争,现在它可以工作。但也许有可能不使用蚂蚁,只使用IDEA。我需要检查一下。