如何在IDEA中构建.war文件以部署到Liferay?

时间:2012-04-08 20:43:50

标签: java intellij-idea liferay portlet liferay-6

我有一个现有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

UPD:也许有人会告诉我如何正确建立* .war?我认为这就够了。

3 个答案:

答案 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。我需要检查一下。