如何使用 Maven 为 liferay 插件项目创建服务生成器

How to create service builder for liferay plugin project with maven

我已经创建了 Liferay 插件项目。 maven安装也结束了。 它给出

 ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ---------------------------------------------------------------------
[INFO] Total time: 1:29.773s
[INFO] Finished at: Wed Jun 17 15:46:10 IST 2015
[INFO] Final Memory: 34M/151M
[INFO] -----------------------------.

但是无法添加服务生成器。

当我尝试添加服务生成器时
new->Liferay 服务生成器。

它没有显示任何插件项目。
那么如何添加服务生成器呢?

坦率地说,Liferay-Maven 组合在 eclipse 中并没有得到 Liferay IDE 的完全支持。最初 Liferay IDE 只是为了 ANT 支持而创建的,但是由于引入了 Maven 支持,所以缺少了很多东西。

您提出的这个问题也适用于以下选项。

  1. JSF 门户组件
  2. 布局
  3. 主题
  4. 服务生成器

这不是以下选项的问题

  1. 挂钩
  2. 小门户
  3. Vaadin Portlet

因此,最好的方法是通过特定 liferay 版本支持的 maven 原型生成新的服务构建器。 例如 com.liferay.maven.archetypes:liferay-servicebuilder-archetype:6.2.1 for liferay 6.2.1 GA2 version.

如果您想将 vaadin 应用程序添加到现有的 liferay portlet,然后创建新的 LIFERAY-VAADIN 项目,您可以在那里使用 "You can continue to use ServiceBuilder as you always have, and retrieve data from your services using XXXXXServiceUtil (or XXXXXLocalServiceUtil)." 您可能还想检查 here, and here

例如,这里有一个来自 vaadin 的 DatabaseUtil class。

import java.awt.List;
import java.util.ArrayList;

import com.vaadin.data.util.HierarchicalContainer;

public class DatabaseUtil {
  public static HierarchicalContainer fillTree_db() {
    HierarchicalContainer container = new HierarchicalContainer();
    ArrayList < ArrayList < String >> treeNodes = new ArrayList < ArrayList < String >> ();

    try {

      List < TREEVIEW > nodes = TREEVIEWLocalServiceUtil.getAllNodes();

      for (TREEVIEW node: nodes) {
        String nodename = node.getNodename();
        ArrayList < String > row = new ArrayList < String > ();
        row.add(String.valueOf(node.getNodeid()));
        row.add(node.getNodename());
        row.add(String.valueOf(node.getRootid()));
        container.addItem(nodename);
        treeNodes.add(row);
      }

      for (int i = 0; i < treeNodes.size(); i++) {
        int root = 0;
        root = Integer.parseInt(treeNodes.get(i).get(2));

        if (root != 0)
          container.setParent(treeNodes.get(i).get(1),
            treeNodes.get(root - 1).get(1));
      }

    } catch (Exception e) {
      System.err.println("Exception: " + e.getMessage());
    } finally {}
    return container;
  }

}