参考: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
我的目录结构如图
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,只需要替换生产的两个文件就好了。
如果需要代码可以移步:
完整代码