2012-09-18 61 views
3

我試圖弄清楚如何通過編程方式從存檔文件(.zip)導入Eclipse項目 - 我想要執行導入嚮導所做的同樣的事情,但會自動執行(使用嚮導定期重新導入相同的項目開始感覺真的很囉嗦)。我發現了一些相關的問題(例如Programmatically importing an existing project into Eclipse),但我無法弄清楚如何得到導入.zip的相同類型的東西。如何以編程方式從.zip文件導入Eclipse項目?

我目前的想法如下:如果我能以某種方式從.zip獲得項目描述,那麼我可以以編程方式創建項目(根據引用的問題)。從那裏,我希望我可以:

這是否有意義? (如果沒有,我該怎麼做?)如果是這樣,我應該怎麼做從.zip獲得項目描述?

+0

假設你已經安裝了PDE SDK,你應該能夠打到CTRL-ALT-F1一旦導入嚮導是可見,從而獲得嚮導頁面類的名稱,然後您可以查看向導類內部正在發生的事情。我發現代碼檢查通常比谷歌搜索更容易。 :) – Bananeweizen

回答

3

對於它的價值,這似乎工作(預整理):

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()); 
相關問題