如何导入从编程的.zip文件的Eclipse项目?(How do I import an Eclip

2019-07-31 17:02发布

我试图找出如何导入从归档文件(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

Answer 1:

对于它的价值,这似乎工作(预整理):

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());


文章来源: How do I import an Eclipse project from a .zip file programmatically?