我有一个现有 portlet 的来源。我对其进行了一些更改以修复一些错误,现在我需要将固定源部署到 liferay。我使用 artifact 选项构建 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
UPD:也许有人会向我提供如何正确构建 *.war 的说明?我认为这就足够了。
最佳答案
确保liferay-display.xml
在WEB-INF
目录在你的 war 中,它的内容是好的。
它应该包含这样的内容:
<?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>
也许构建系统在创建 war 时缺少它。
如果没有,请手动将其放入那里,看看是否可行。
编辑
好的。现在有了更多信息,您似乎包括了 servlet-api
在你的 war 中。该 jar(及其中的类)由门户(或更具体地说,由 servlet 容器)提供。 portlet-api
也是如此.您不应将它们包含在已部署的应用程序中。
检查这些依赖项是否指定为 <scope>provided</scope>
在你的 pom.xml 中。
关于java - 如何在 IDEA 中构建 .war 文件以部署到 Liferay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066343/