我试图找出如何导入从归档文件(Eclipse项目.zip
编程) -我想要做的导入向导做同样的事情,但自动(重新导入经常使用向导的同一个项目是开始觉得自己真的很啰嗦)。 我已经发现了一些相关的问题(如编程方式导入现有的项目到Eclipse ),但我无法弄清楚如何获得同样的事情为工作.zip
进口。
我现在的想法是:如果我可以从一个项目的描述.zip
莫名其妙的话,我可以以编程方式创建项目(按引用的问题)。 从那里,我希望我可以:
- 创建
ZipLeveledStructureProvider
( http://javasourcecode.org/html/open-source/eclipse/eclipse-3.5.2/org/eclipse/ui/internal/wizards/datatransfer/ZipLeveledStructureProvider.java.html的) .zip
文件。 - 运行一个
ImportOperation
( http://javasourcecode.org/html/open-source/eclipse/eclipse-3.5.2/org/eclipse/ui/wizards/datatransfer/ImportOperation.java.html )导入的内容.zip
到创建的项目。
这有意义吗? (如果没有,我应该怎么做吗?)如果是这样,我应该如何去进行有关从得到一个项目描述.zip
?
对于它的价值,这似乎工作(预整理):
IWorkspace workspace = this.project.getWorkspace();
IProjectDescription newProjectDescription = workspace.newProjectDescription(projectName);
IProject newProject = workspace.getRoot().getProject(projectName);
newProject.create(newProjectDescription, null);
newProject.open(null);
zipFile = new ZipFile(workspace.getRoot().getLocation() + "/" + projectName + ".zip");
IOverwriteQuery overwriteQuery = new IOverwriteQuery() {
public String queryOverwrite(String file) { return ALL; }
};
ZipLeveledStructureProvider provider = new ZipLeveledStructureProvider(zipFile);
List<Object> fileSystemObjects = new ArrayList<Object>();
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
fileSystemObjects.add((Object)entries.nextElement());
}
ImportOperation importOperation = new ImportOperation(newProject.getFullPath(), new ZipEntry(projectName), provider, overwriteQuery, fileSystemObjects);
importOperation.setCreateContainerStructure(false);
importOperation.run(new NullProgressMonitor());