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

标签 java intellij-idea liferay portlet liferay-6

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

相关文章:

linux - 如何配置 Linux Ubuntu 可以处理的文件名长度?

java - 从另一个 portlet (Liferay + Spring) 获取 Portlet Application Context

liferay - 在liferay的user_表中使用重复的电子邮件ID

java - 如何在entityManagerFactory中注入(inject)Hibernate Interceptor类

javascript - 将需要 CommonJS 功能的 JavaScript 编译为 native Java

intellij-idea - WebStorm:在 ES6 基类中标记要重写的方法

android - Android Gradle 构建中的意外节点 Android 打包

java - 值 setValueAt()

java - 从 Java 客户端调用 lambda 函数后如何访问 lambda 函数调用的云监视日志

scala - 对于基本数据框创建示例,我应该如何在 Spark 中编写单元测试?