`
cutesunshineriver
  • 浏览: 198745 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

在eclipse中制作API参考文档

阅读更多
具体可参考IBM的文章:http://www.ibm.com/developerworks/cn/rational/07/0320_alupului/

谈一下遇到的问题,首先是从工程里导出API的html文档,本次导出涉及133个插件工程,内存占用量高达630M,全部导完花去10-20分钟。
导出设置时注意以下配置:

分配内存最大值设为1024M,编码方式设为utf-8。

导完后,需要划分Topic,将这些Topic链接到API参考文档里,便于分工协作。所有的TOC文件都必须在plugin.xml里注册。为了避免手工进行Topic划分和Topic下的package注册,使用以下程序自动生成相关TOC文件并完成在plugin.xml里的注册和API参考文档里的link。

package org.autumn.doc.user.generate;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import org.autumn.doc.user.Activator;

/**
 * 1 - topics目录下生成TOC文件 <br/>
 * 2 - plugin.xml里注册TOC文件 <br/>
 * 3 - topics_Reference.xml里注册TOC文件
 * 
 * @author sunny
 * 
 */
public class GeneratePluginToc {
	public static final String DOC_DIR = "doc";
	public static final String TOPICS_DIR = "topics";
	public static final String WS_DIR = "E:\\Autumn BPM\\ws4bpm";
	public static final String TOPICS_FILE_EXTENSION = ".toc.xml";
	public static final String PLUGIN_XML = "plugin.xml";
	public static final String SUMMARY_HTML = "package-summary.html";
	public static final String TOPICS_REFERENCE_XML = "topics_Reference.xml";
	public static final String SEPRATOR = System.getProperty("file.separator");
	public static final String DOT = ".";

	private static List<String> plugins = new ArrayList<String>();
	static {
		plugins.add("org.autumn.action.core");
		plugins.add("org.autumn.action.interceptor.navigator");
		plugins.add("org.autumn.action.interceptor.spec");
		plugins.add("org.autumn.action.layout");
		plugins.add("org.autumn.action.model");
		plugins.add("org.autumn.ado.core");
		plugins.add("org.autumn.ado.spec");
		plugins.add("org.autumn.bpm.behavior");
		plugins.add("org.autumn.bpm.client");
		plugins.add("org.autumn.bpm.commons");
		plugins.add("org.autumn.bpm.core");
		plugins.add("org.autumn.bpm.data");
		plugins.add("org.autumn.bpm.engine");
		plugins.add("org.autumn.bpm.event.register");
		plugins.add("org.autumn.bpm.event.thrower");
		plugins.add("org.autumn.bpm.event.trigger");
		plugins.add("org.autumn.bpm.loadbalance");
		plugins.add("org.autumn.bpm.resource.service");
		plugins.add("org.autumn.bpm.runtime");
		plugins.add("org.autumn.builder");
		plugins.add("org.autumn.cluster");
		plugins.add("org.autumn.common.constraint");
		plugins.add("org.autumn.configuration.bpm");
		plugins.add("org.autumn.configuration.scheduler");
		plugins.add("org.autumn.core");
		plugins.add("org.autumn.database");
		plugins.add("org.autumn.entity");
		plugins.add("org.autumn.evaluation");
		plugins.add("org.autumn.expression.core");
		plugins.add("org.autumn.expression.defs");
		plugins.add("org.autumn.expression.expand");
		plugins.add("org.autumn.expression.json.factory");
		plugins.add("org.autumn.expression.json.render");
		plugins.add("org.autumn.expression.sql.factory");
		plugins.add("org.autumn.expression.sql.render");
		plugins.add("org.autumn.form.service");
		plugins.add("org.autumn.identity");
		plugins.add("org.autumn.logicview.core");
		plugins.add("org.autumn.logicview.expand");
		plugins.add("org.autumn.logicview.model");
		plugins.add("org.autumn.model.core");
		plugins.add("org.autumn.model.data");
		plugins.add("org.autumn.model.defs");
		plugins.add("org.autumn.model.editdomain");
		plugins.add("org.autumn.model.extension");
		plugins.add("org.autumn.model.loader");
		plugins.add("org.autumn.model.navigator.core");
		plugins.add("org.autumn.operator");
		plugins.add("org.autumn.scheduler.core");
		plugins.add("org.autumn.scheduler.engine");
		plugins.add("org.autumn.scheduler.model");
		plugins.add("org.autumn.sdo");
		plugins.add("org.autumn.type");
		plugins.add("org.autumn.ui.decorator");
		plugins.add("org.autumn.view.data");
		plugins.add("org.autumn.view.feature");
		plugins.add("org.autumn.viewspec.core");
		plugins.add("org.autumn.viewspec.expand");
		plugins.add("org.autumn.viewspec.model");
	}

	private static void generateAll() {
		generateTocs();
		regeisterPluginXML();
		regeisterTopicsReferenceXML();
	}

	private static void generateTocs() {
		File topicsDir = new File(getProjectPath() + SEPRATOR + TOPICS_DIR);
		for (File topic : topicsDir.listFiles()) {
			topic.delete();
		}

		for (String plugin : plugins) {
			File toc = new File(topicsDir + SEPRATOR + plugin
					+ TOPICS_FILE_EXTENSION);
			if (!toc.exists()) {
				try {
					toc.createNewFile();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}

			try {
				PrintWriter writer = new PrintWriter(toc);
				writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
				writer.printf("<toc label=\"%s\">%n", plugin);

				String docPath = getProjectPath() + SEPRATOR + DOC_DIR;
				File pluginDocDir = new File(docPath + SEPRATOR
						+ plugin.replaceAll("\\" + DOT, "/"));

				printTopicLine(writer, plugin, pluginDocDir);

				writer.println("</toc>");
				writer.close();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
		}
	}

	private static void printTopicLine(PrintWriter writer, String plugin,
			File dir) {
		List<String> files = new ArrayList<String>();
		for (File f : dir.listFiles()) {
			files.add(f.getName());
		}
		for (File f : dir.listFiles()) {
			if (files.contains(SUMMARY_HTML)) {
				String path = dir.getPath().replace("\\", "/");
				String uriLike = plugin.replace(DOT, "/");
				String label = path.substring(path.indexOf(uriLike));
				String href = DOC_DIR + "/" + label + "/" + SUMMARY_HTML;
				writer.printf("\t<topic href=\"%s\" label=\"%s\">%n", href,
						label.replaceAll("/", DOT));
				writer.println("\t</topic>");
				
				files.remove(SUMMARY_HTML);
			}
			
			if (f.isDirectory()) {
				printTopicLine(writer, plugin, f);
			}
		}
	}

	private static void regeisterTopicsReferenceXML() {
		File topicsReferenceXML = new File(getProjectPath() + SEPRATOR
				+ TOPICS_REFERENCE_XML);
		try {
			PrintWriter writer = new PrintWriter(topicsReferenceXML);
			writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
			writer.println("<?eclipse version=\"3.4\"?>");
			writer.println("<toc label=\"API文档\">");

			File topicsDir = new File(getProjectPath() + SEPRATOR + TOPICS_DIR);
			for (File file : topicsDir.listFiles()) {
				String plugin = file.getName().replace(TOPICS_FILE_EXTENSION,
						"");
				String href = DOC_DIR + "/" + plugin.replace(DOT, "/") + "/"
						+ SUMMARY_HTML;
				writer.printf("\t<topic href=\"%s\" label=\"%s\">%n", href,
						plugin);
				writer.printf("\t\t<link toc=\"%s\">%n", TOPICS_DIR + "/"
						+ file.getName());
				writer.println("\t\t</link>");
				writer.println("\t</topic>");
			}

			writer.println("</toc>");
			writer.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	private static void regeisterPluginXML() {
		File pluginXML = new File(getProjectPath() + SEPRATOR + PLUGIN_XML);
		try {
			PrintWriter writer = new PrintWriter(pluginXML);
			writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
			writer.println("<?eclipse version=\"3.4\"?>");
			writer.println("<plugin>");
			writer.println("\t<extension point=\"org.eclipse.help.toc\">");
			writer.println("\t\t<toc file=\"toc.xml\" primary=\"true\">");
			writer.println("\t\t</toc>");
			writer.println("\t\t<index path=\"index\">");
			writer.println("\t\t</index>");
			writer.println("\t</extension>");
			writer.println("\t<extension point=\"org.eclipse.help.toc\">");
			writer.println("\t\t<toc file=\"topics_Guide.xml\">");
			writer.println("\t\t</toc>");
			writer.println("\t</extension>");
			writer.println("\t<extension point=\"org.eclipse.help.toc\">");
			writer.printf("\t\t<toc file=\"%s\">%n", TOPICS_REFERENCE_XML);
			writer.println("\t\t</toc>");

			File topicsDir = new File(getProjectPath() + SEPRATOR + TOPICS_DIR);
			for (File file : topicsDir.listFiles()) {
				writer.printf("\t\t<toc file=\"%s\">%n", TOPICS_DIR + "/"
						+ file.getName());
				writer.println("\t\t</toc>");
			}

			writer.println("\t</extension>");
			writer.println("</plugin>");
			writer.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	private static String getProjectPath() {
		return WS_DIR + SEPRATOR + Activator.PLUGIN_ID;
	}

	public static void main(String[] args) {
		GeneratePluginToc.generateAll();
	}

}

  • 大小: 61.2 KB
0
0
分享到:
评论

相关推荐

    org.eclipse.jgit-5.13.0.202109080827-r.jar中文-英文对照文档.zip

    中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...

    eclipse-collections-7.1.2.jar中文-英文对照文档.zip

    中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...

    eclipse-collections-api-7.1.2.jar中文-英文对照文档.zip

    中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...

    eclipse汉化包2017-8-19版本

    2. **帮助文档**:Eclipse的在线帮助系统,包括各种教程、API参考和问题解决方案,都被汉化以适应中文用户的需求。 3. **插件支持**:许多Eclipse插件也可能被汉化,以确保整个开发环境的一致性。 安装Eclipse汉化...

    org.eclipse.jgit-5.10.0.202012080955-r.jar中文-英文对照文档.zip

    中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...

    获取Android的Java源代码并在Eclipse中进行关联.doc

    ### 获取Android的Java源代码并在Eclipse中进行关联 #### 一、准备工作 为了能够顺利地获取Android的Java源代码并在Eclipse中进行关联,我们需要完成以下准备工作: 1. **下载并安装Android SDK**: - 访问[官方...

    BIRT文档(中、英)+API+各种使用小技巧报表实例

    本资源包包含BIRT的中文和英文文档,API参考以及各种使用小技巧报表实例,非常适合想要深入学习BIRT的人士。 **中文与英文文档**: - **中文文档**:对于初学者来说,中文文档能够帮助更好地理解BIRT的各个方面,...

    eclipse-collections-forkjoin-7.1.2.jar中文-英文对照文档.zip

    中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...

    基于java语言开发的电子词典

    在Java中,可以使用Swing或JavaFX来构建图形用户界面,SQLite或JDBC连接的其他数据库系统用于存储词汇。 3. **词汇库管理** 词典数据库是电子词典的核心。开发者可以使用XML、JSON或自定义格式来组织词汇数据,...

    org.eclipse.jgit.lfs-5.10.0.202012080955-r.jar中文-英文对照文档.zip

    中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...

    org.eclipse.jgit.ssh.jsch-5.13.0.202109080827-r.jar中文-英文对照文档.zip

    中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...

    Java开发工具,自动生成api文档.zip

    开发工具在软件开发生命周期中扮演着至关重要的角色,它们旨在简化和加速从概念设计到产品部署的各个环节。以下是开发工具的主要作用: 代码编写与编辑: 提供集成开发环境(IDE),如Visual Studio、Eclipse、...

    Eclipse插件开发-测试用例自动生成工具.zip

    开发工具在软件开发生命周期中扮演着至关重要的角色,它们旨在简化和加速从概念设计到产品部署的各个环节。以下是开发工具的主要作用: 代码编写与编辑: 提供集成开发环境(IDE),如Visual Studio、Eclipse、...

    Qi-API 接口开放平台开发者调用工具.zip

    开发工具在软件开发生命周期中扮演着至关重要的角色,它们旨在简化和加速从概念设计到产品部署的各个环节。以下是开发工具的主要作用: 代码编写与编辑: 提供集成开发环境(IDE),如Visual Studio、Eclipse、...

    WPS 二次开发接口文档

    在WPS二次开发中,API提供了创建、修改、保存文档以及控制WPS应用程序的能力。 2. **ET(Kingsoft Spreadsheets)**: ET是WPS Office中的电子表格组件,提供了类似于Microsoft Excel的功能。通过ET的API,开发者...

    Extjs4.2入门详细文档以及表格初级制作

    - **doc**:包含Extjs的API文档,对于开发者来说是非常重要的参考资料,通过API文档可以了解每个组件、方法和属性的具体用法。 - **examples**:提供了大量的官方演示示例,这些示例覆盖了Extjs的主要功能,是学习和...

    birt API 动态创建交叉表

    BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一个开源报表系统,它提供了一整套工具,使得开发者能够利用API动态地创建和定制复杂的报表,包括交叉表(Cross Tab)。交叉表是一种数据汇总...

    eclipse RCP开发一个简单的MYSQL客户端工具.zip

    开发工具在软件开发生命周期中扮演着至关重要的角色,它们旨在简化和加速从概念设计到产品部署的各个环节。以下是开发工具的主要作用: 代码编写与编辑: 提供集成开发环境(IDE),如Visual Studio、Eclipse、...

    x3399 开发文档

    根据提供的文档信息,我们可以总结出以下关键知识点,主要聚焦于X3399 Android平台的开发环境搭建、工具使用、源码管理与编译、以及最终的映像文件烧录等几个方面。 ### 1. 开发平台的搭建 #### 1.1 使用U盘安装...

    docflex-doclet-1.6.1Doc.zip

    在IT行业中,生成高质量的文档是至关重要的,无论是开发者为了理解代码,还是团队成员之间进行协作,或者是对外提供API的说明。Javadoc就是Java编程语言中用于生成文档的一个强大工具,它能将源代码中的注释转换成...

Global site tag (gtag.js) - Google Analytics