From 03e646a96ff484b217f9689bc4677e9035bfd9f4 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 24 Mar 2015 15:13:35 +0100 Subject: [PATCH] eclipse: ensure .project is created before .classpath so relative paths could be evaluated correctly (IDEA-137966) --- .../export/ExportEclipseProjectsAction.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/export/ExportEclipseProjectsAction.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/export/ExportEclipseProjectsAction.java index 4324bcff686d..d0369ed89cae 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/export/ExportEclipseProjectsAction.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/export/ExportEclipseProjectsAction.java @@ -34,6 +34,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.Function; import com.intellij.util.SmartList; +import com.intellij.util.containers.hash.LinkedHashMap; import org.jdom.Element; import org.jdom.output.EclipseJDOMUtil; import org.jetbrains.annotations.NotNull; @@ -118,10 +119,22 @@ public class ExportEclipseProjectsAction extends AnAction implements DumbAware { } } else { + LinkedHashMap module2StorageRoot = new LinkedHashMap(); for (Module module : dialog.getSelectedModules()) { - ModuleRootModel model = ModuleRootManager.getInstance(module); - VirtualFile[] contentRoots = model.getContentRoots(); + VirtualFile[] contentRoots = ModuleRootManager.getInstance(module).getContentRoots(); String storageRoot = contentRoots.length == 1 ? contentRoots[0].getPath() : ClasspathStorage.getStorageRootFromOptions(module); + module2StorageRoot.put(module, storageRoot); + try { + DotProjectFileHelper.saveDotProjectFile(module, storageRoot); + } + catch (Exception e1) { + LOG.error(e1); + } + } + + for (Module module : module2StorageRoot.keySet()) { + ModuleRootModel model = ModuleRootManager.getInstance(module); + String storageRoot = module2StorageRoot.get(module); try { Element classpathElement = new EclipseClasspathWriter().writeClasspath(null, model); File classpathFile = new File(storageRoot, EclipseXml.CLASSPATH_FILE); @@ -139,7 +152,6 @@ public class ExportEclipseProjectsAction extends AnAction implements DumbAware { EclipseJDOMUtil.output(ideaSpecific, emlFile, project); } - DotProjectFileHelper.saveDotProjectFile(module, storageRoot); } catch (Exception e1) { LOG.error(e1);