【问题标题】:How to program portlets efficiently using Liferay and Maven?如何使用 Liferay 和 Maven 高效地编写 portlet?
【发布时间】:2012-11-21 07:22:57
【问题描述】:

我可以轻松地创建一个 Maven 项目来编程 portlet(例如使用原型)。但是为了将这个项目部署到 Liferay,我必须运行:

mvn package liferay:deploy

即使我只更改一个简单的 JSP 文件,我也必须重新部署整个 portlet 应用程序。有没有办法加快这个开发过程?

我不想使用 Ant,因为那样我将不得不处理依赖项和其他东西。我真的很想使用 Maven 来开发 Liferay portlet 应用程序。

我尝试了 JRebel,但由于打包到 WAR 文件,它的魔法不起作用:(

重现这种情况:

  1. 使用 artifactId:liferay-portlet-archetype 从 maven 原型创建项目
  2. 向 pom.xml 添加属性:liferay.version、liferay.auto.deploy.dir
  3. 启动 Liferay
  4. mvn package liferay:deploy -> 这将创建一个 WAR 文件并将其部署到 liferay 自动部署目录。
  5. 每次你想改变一些东西,你必须做 mvn package liferay:deploy

这比 hello world 更重要。

据我所知,这应该是最佳做法。但是 Liferay 文档在这个主题上很少见。还有其他方法吗?

【问题讨论】:

  • 你在使用Maven Liferay这个项目吗?
  • 是和不是。这些库由 Liferay Maven 插件从 Maven 存储库内部使用。

标签: java maven liferay


【解决方案1】:

结合使用 STS(SpringSource Tool Suite)和 Liferay IDE 解决了问题。使用这种组合,根本不需要使用 Liferay Maven 插件。只需添加 Liferay 服务器,在此服务器上部署 Maven 应用程序即可。

将此与 JRebel 结合使用是恕我直言最有效的解决方案。

【讨论】:

    【解决方案2】:

    您的应用程序可以打包在 WAR 中以便 JRebel 工作,这没有问题。你把 rebel.xml 配置文件放到 WAR 里面了吗?

    【讨论】:

    • 是的,我在类路径中有 rebel.xml。我编辑了这个问题,所以任何人都可以重新创建这种情况。
    • 你在类路径中有rebel.xml,这意味着它被打包在WAR的WEB-INF/classes中,对吧?请使用 -Drebel.log=true VM 参数启用 JRebel 日志并将日志发送到 JRebel 支持,我们会解决的。它要么是代理监视某个其他目录,要么是版本说明错误。顺便说一句,JRebel 通常打印到标准输出,它监控的目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多