mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
eclipse: load specific jdk for external build (IDEA-94868)
(cherry picked from commit 3f08c4e8b2181384cbc5f5ace2c637d23f42992a)
This commit is contained in:
+16
-6
@@ -22,10 +22,8 @@ import com.intellij.util.ArrayUtil;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.idea.eclipse.IdeaXml;
|
||||
import org.jetbrains.idea.eclipse.conversion.AbstractIdeaSpecificSettings;
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType;
|
||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
|
||||
import org.jetbrains.jps.model.java.JpsJavaModuleExtension;
|
||||
import org.jetbrains.jps.model.java.JpsJavaSdkType;
|
||||
import org.jetbrains.jps.model.java.*;
|
||||
import org.jetbrains.jps.model.library.sdk.JpsSdkType;
|
||||
import org.jetbrains.jps.model.module.JpsDependenciesList;
|
||||
import org.jetbrains.jps.model.module.JpsModule;
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRoot;
|
||||
@@ -63,14 +61,26 @@ class JpsIdeaSpecificSettings extends AbstractIdeaSpecificSettings<JpsModule, St
|
||||
@Override
|
||||
protected void setupJdk(Element root, JpsModule model) {
|
||||
final String inheritJdk = root.getAttributeValue("inheritJdk");
|
||||
final JpsDependenciesList dependenciesList = model.getDependenciesList();
|
||||
if (inheritJdk != null && Boolean.parseBoolean(inheritJdk)) {
|
||||
final JpsDependenciesList dependenciesList = model.getDependenciesList();
|
||||
dependenciesList.addSdkDependency(JpsJavaSdkType.INSTANCE);
|
||||
}
|
||||
else {
|
||||
final String jdkName = root.getAttributeValue("jdk");
|
||||
if (jdkName != null) {
|
||||
JpsSdkTableSerializer.setSdkReference(model.getSdkReferencesTable(), jdkName, JpsJavaSdkType.INSTANCE);
|
||||
String jdkType = root.getAttributeValue("jdk_type");
|
||||
JpsSdkType<?> sdkType = null;
|
||||
if (jdkType != null) {
|
||||
sdkType = JpsSdkTableSerializer.getSdkType(jdkType);
|
||||
}
|
||||
if (sdkType == null) {
|
||||
sdkType = JpsJavaSdkType.INSTANCE;
|
||||
}
|
||||
dependenciesList.addSdkDependency(sdkType);
|
||||
JpsSdkTableSerializer.setSdkReference(model.getSdkReferencesTable(), jdkName, sdkType);
|
||||
if (sdkType instanceof JpsJavaSdkTypeWrapper) {
|
||||
dependenciesList.addSdkDependency(JpsJavaSdkType.INSTANCE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+14
-6
@@ -27,6 +27,7 @@ import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.module.ModuleUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.JavaSdk;
|
||||
import com.intellij.openapi.projectRoots.ProjectJdkTable;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.*;
|
||||
@@ -308,13 +309,20 @@ public class IdeaSpecificSettings extends AbstractIdeaSpecificSettings<Modifiabl
|
||||
isModified = true;
|
||||
}
|
||||
}
|
||||
if (entry instanceof JdkOrderEntry && EclipseModuleManagerImpl.getInstance(entry.getOwnerModule()).getInvalidJdk() != null) {
|
||||
if (entry instanceof InheritedJdkOrderEntry) {
|
||||
root.setAttribute(INHERIT_JDK, "true");
|
||||
} else {
|
||||
root.setAttribute("jdk", ((JdkOrderEntry)entry).getJdkName());
|
||||
if (entry instanceof JdkOrderEntry) {
|
||||
final Sdk jdk = ((JdkOrderEntry)entry).getJdk();
|
||||
if (EclipseModuleManagerImpl.getInstance(entry.getOwnerModule()).getInvalidJdk() != null ||
|
||||
(jdk != null && !(jdk.getSdkType() instanceof JavaSdk))) {
|
||||
if (entry instanceof InheritedJdkOrderEntry) {
|
||||
root.setAttribute(INHERIT_JDK, "true");
|
||||
} else {
|
||||
root.setAttribute("jdk", ((JdkOrderEntry)entry).getJdkName());
|
||||
if (jdk != null) {
|
||||
root.setAttribute("jdk_type", jdk.getSdkType().getName());
|
||||
}
|
||||
}
|
||||
isModified = true;
|
||||
}
|
||||
isModified = true;
|
||||
}
|
||||
if (!(entry instanceof LibraryOrderEntry)) continue;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user