Liferay porta 清理不需要的Portlet

参考:Liferay 6.2 改造系列之二:清理不需要的Portlet,编写的自动化修改XML配置文件
1,编写配置文件clean-portlet.properties

#一、特殊Portlet:
#以下Portlet数据特殊用途的Portlet,去除后会出现运行错误:

#1、站点模版
#通过com.liferay.portal.events.AddDefaultLayoutSetPrototypesAction类,系统初始化站点模版时,使用到如下Portlet

#Intranet Site模版:

#首页:

#116  活动 (Activities) 

#3  查询(Search)

#82  语言 (Language) 

#101  Asset Publisher

#文档页:

#20  文档媒体库 (Documents and Media)

#101  Asset Publisher

#新闻页:

39  RSS

#Community Site模版:

#首页:

19  留言板 (Message Boards) 

3   查询(Search)

59  问卷调查展示 (Polls Display) 

180  用户统计 (User Statistics) 

101  Asset Publisher

#Wiki页:

36  Wiki

122  Asset Categories Navigation

148  Asset Tags Cloud

#清理方法:

#删除com.liferay.portal.events.AddDefaultLayoutSetPrototypesAction类,并在liferay-portlet.xml、portlet-custom.xml中去除以上portlet的定义;

#2、页面模版
#通过com.liferay.portal.events.AddDefaultLayoutPrototypesAction类,系统初始化页面模版时,使用到如下Portlet

#Blog页:

33  博客 (Blogs) 

148  Asset Tags Cloud

114  Content Display Page页:

141  近期博主 (Recent Bloggers) 

122  Asset Categories Navigation

3  查询(Search)

101  Asset Publisher

#Wiki页:

36  Wiki

122  Asset Categories Navigation

141  近期博主 (Recent Bloggers) 

#清理方法:

#删除com.liferay.portal.events.AddDefaultLayoutPrototypesAction类,并在liferay-portlet.xml、portlet-custom.xml中去除以上portlet的定义;


#3、管理员注册流程
#11   Portal目录 (Portal Directory) 

#4、基本功能+管理功能
#2  我的账户(My Account)

#9  管理(Admin)

48  IFrame

49  Site Redirector

#58  Login

#86  Portlet Configuration

#88  Layouts Admin

#90  Portal

#103  Tags Compiler

#113  Portlet CSS

#118  Nested Portlets

#119  Asset

#124  Social

#125  Users Admin

#127  User Groups Admin

#128  Roles Admin

#129  Password Policies Admin

#130  Portal Settings

#132  Plugins Admin

#133  Portlet Sharing

#134  Sites Admin

#135  Admin Instances

#137  Admin Server

#139  Expando

#140  My Pages

#142  Flags

#145  Dockbar

#146  Page Templates

#149  Site Templates

#156  Group Pages

#160  Control Panel Menu

#165  Site Settings

#170  Staging Bar

#172  Asset Browser

#174  Site Memberships Admin

#185  Site Browser

#190  Control Panel Home

#191  Site Teams Admin

#192  Site Template Settings

#二、删除其余portlet
#在/portal-web/docroot/WEB-INF目录下,分别在liferay-display.xml、liferay-portlet.xml、portlet-custom.xml文件中注释或删除其余Portlet相关定义即可。

#即如下Portlet清单:

10 地址簿(Address Book)

15 Journal

16 货币转换器 (Currency Converter)

23 字典 (Dictionary)

25 Polls

26 翻译器 (Translator)

27 单位换算器 (Unit Converter)

28 书签 (Bookmarks)

29 我的站点 (My Sites)

30 网络工具 (Network)

31 媒体库 (Media Gallery)

33 博客 (Blogs)

34 购物 (Shopping)

47 Hello World

50 Hello Velocity

54 Wiki展示 (Wiki Display)

56 Journal Content

61 贷款计算器 (Loan Calculator)

62 Journal Articles

64 最近下载 (Recent Documents)

66 网页代理 (Web Proxy)

67 亚马逊排名 (Amazon Rankings)

70 密码生成器 (Password Generator)

71 导航 (Navigation)

73 路径导航 (Breadcrumb)

77 网页内容搜索 (Journal Content Search)

83 通知 (Alerts)

84 公告 (Announcements)

85 站点地图 (Site Map)

97 便签 (Quick Note)

98 Software Repository

99 Asset Tag Admin

100 邀请 (Invitation)

102 XSL内容 (XSL Content)

107 页面评论 (Page Comments)

108 页面评价 (Page Ratings)

110 文档与媒体展示 (Documents and Media Display)

114 近期博主 (Recent Bloggers)

115 博客聚合 (Blogs Aggregator)

121 请求 (Requests)

131 系统监视器 (Monitoring)

141 Asset Tags Navigation

143 页面标记 (Page Flags)

147 Asset Category Admin

150 工作流任务 (Workflow Tasks)

151 工作流 (Workflow)

152 工作流配置 (Workflow Configuration)

153 我的工作流任务 (My Workflow Tasks)

154 Wiki (Wiki Admin)

157 提交的任务 (Workflow Instances)

158 我提交的任务 (My Workflow Instances)

161 博客 (Blogs)

162 留言板 (Message Boards Admin)

164  Fast Login

166 动态数据映射(DDM) (Dynamic Data Mapping)

167 动态数据列表 (Dynamic Data Lists)

169 动态数据列表显示 (Dynamic Data List Display)

173 Summary

175 相关Assets (Related Assets)

176 License管理器 (License Manager)

178 移动设备类 (Mobile Device Rules)

179 社交活动 (Social Activity)

181 群组统计 (Group Statistics)

182 回收站 (Trash)

184 站点目录 (Sites Directory)

186 好友列表 (Friends Directory)

187 站点成员列表 (Site Members Directory)

188 我的站点列表 (My Sites Directory)

193 访问最多的Assets (Most Viewed Assets)

194 评价最高的Assets (Highest Rated Assets)

2,复制自带portlet对应的配置文件到项目目录下,我的目录是/src/main/resources
我的目录结构如图
Liferay porta 清理不需要的Portlet_第1张图片
3,编写自动修改代码:

package com.genertech;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class CleanPortletFromXml {
    public static void main(String[] args) throws Exception {
        FileReader fr = new FileReader(new File("src/main/resources/clean-portlet.properties"));
        BufferedReader br = new BufferedReader(fr);
        List removePortletNames = new ArrayList();
        String str = null;
        Pattern pattern = Pattern.compile("\\d+");
        Matcher matcher;
        while (br.ready()) {
            str = br.readLine();
            if (!str.startsWith("#") && str.trim().length() > 0) {
                System.out.println(str);
                matcher = pattern.matcher(str);
                if (matcher.find()) {
                    str = matcher.group();
                    removePortletNames.add(str);
                    System.out.println(str);
                }
            }
        }
        fr.close();
        br.close();
        // System.out.println("F你好");
        cleanPortlet(removePortletNames, "portlet-custom.xml");
        cleanPortlet(removePortletNames, "liferay-portlet.xml");
    }

    public static void cleanPortlet(List removePortletNames, String fileName) throws Exception {

        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(new File("src/main/resources", fileName));
        Element element = document.getRootElement();

        List elements = element.elements("portlet");
        String portletName, displayName;
        for (Element e : elements) {
            portletName = e.element("portlet-name").getText();
//          displayName = e.element("display-name").getText();
            if (removePortletNames.contains(portletName)) {
                element.remove(e);
            }
        }
        writer(document, fileName);
    }

    /**
     * 把document对象写入新的文件
     * 
     * @param document
     * @throws Exception
     */
    public static void writer(Document document, String fileName) throws Exception {
        // 紧凑的格式
        // OutputFormat format = OutputFormat.createCompactFormat();
        // 排版缩进的格式
        OutputFormat format = OutputFormat.createPrettyPrint();
        // 设置编码
        format.setEncoding("UTF-8");
        // 创建XMLWriter对象,指定了写出文件及编码格式
        // XMLWriter writer = new XMLWriter(new FileWriter(new
        // File("src//a.xml")),format);
        XMLWriter writer = new XMLWriter(
                new OutputStreamWriter(new FileOutputStream(new File("src/test/resources", fileName)), "UTF-8"),
                format);
        // 写入
        writer.write(document);
        // 立即写入
        writer.flush();
        // 关闭操作
        writer.close();
    }

}

要显示那些默认portlet,只需要在clean-portlet.properties文件中进行处理就Ok了
最终要的是替换掉Liferay portal 目录下对应的的配置文件如我的目录是E:\liferay\liferay-portal-6.2-ce-ga6\tomcat-7.0.62\webapps\ROOT\WEB-INF,只需要替换生产的两个文件就好了。

如果需要代码可以移步:
完整代码

你可能感兴趣的:(Liferay)