首先声明,此方法不是我所发明。所以我在这里只是一个转述者。
所谓暴力,即是通过普通方法无法完成而选用的下下策。
方法原理就是通过手工添加配置信息来进行强行安装插件。(我目前只测试了SVN的插件,至于其他的插件则无法保证)
示例: 向MyEclipse8.6中安装SVN插件。
准备工作: 1)下载site-1.6.18.zip文件包
2)插件配置代码生成器(PluginConfigCreator.java)
3)备份MyEclipse-8.6\configuration 文件夹
步骤: 1)根据个人的开发习惯来安排site-1.6.18.zip中的文件
2)用“插件配置代码生成器”来生成指定目录下所包含的插件的配置信息
3)把配置信息写入到configuration\org.eclipse.equinox.simpleconfigurator目录下的bundles.info中
最后再来展示PluginConfigCreator.java源码。(为了编译方便,所以没有采用“显示行号”的样式)
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* 9. * MyEclipse9 插件配置代码生成器 10. * 11. * 12.
*/
public class PluginConfigCreator {
public PluginConfigCreator() {
}
public void print(String path) {
List<String> list = getFileList(path);
if (list == null) {
return;
}
int length = list.size();
for (int i = 0; i < length; i++) {
String result = "";
String thePath = getFormatPath(getString(list.get(i)));
File file = new File(thePath);
if (file.isDirectory()) {
String fileName = file.getName();
if (fileName.indexOf("_") < 0) {
print(thePath);
continue;
}
String[] filenames = fileName.split("_");
String filename1 = filenames[0];
String filename2 = filenames[1];
result = filename1 + "," + filename2 + ",file:/" + path + "\\"
+ fileName + "\\,4,false";
System.out.println(result);
} else if (file.isFile()) {
String fileName = file.getName();
if (fileName.indexOf("_") < 0) {
continue;
}
int last = fileName.lastIndexOf("_");// 最后一个下划线的位置
String filename1 = fileName.substring(0, last);
String filename2 = fileName.substring(last + 1, fileName
.length() - 4);
result = filename1 + "," + filename2 + ",file:/" + path + "\\"
+ fileName + ",4,false";
System.out.println(result);
}
}
}
public List<String> getFileList(String path) {
path = getFormatPath(path);
path = path + "/";
File filePath = new File(path);
if (!filePath.isDirectory()) {
return null;
}
String[] filelist = filePath.list();
List<String> filelistFilter = new ArrayList<String>();
for (int i = 0; i < filelist.length; i++) {
String tempfilename = getFormatPath(path + filelist[i]);
filelistFilter.add(tempfilename);
}
return filelistFilter;
}
public String getString(Object object) {
if (object == null) {
return "";
}
return String.valueOf(object);
}
public String getFormatPath(String path) {
path = path.replaceAll("\\\\", "/");
path = path.replaceAll("//", "/");
return path;
}
public static void main(String[] args) {
/* 你的插件的安装目录 (切记文件分隔符) */
String plugin = "D:\\Project\\Tools\\Java\\SDK\\Genuitec\\MyEclipse-8.6\\third-plugin\\site-1.6.18";
new PluginConfigCreator().print(plugin);
}
}
由于以上源码采用的是控制台输出信息的方式,所以不方便采集。不过,我们可以通过一个DOS命令来解决这个问题。
C:\bin>java PluginConfigCreator > c:\config.txt
“>”命令可以进行简单的IO输出。这里则是把输出信息保存到C盘下的一个名为config的文本文件中。
原文:http://heisetoufa.iteye.com/blog/994724