mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-99741 Maven system dependencies cause error highlighting
This commit is contained in:
+7
-15
@@ -16,8 +16,6 @@
|
||||
package org.jetbrains.idea.maven.dom;
|
||||
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.xml.XmlElement;
|
||||
import com.intellij.psi.xml.XmlTag;
|
||||
@@ -36,7 +34,10 @@ import org.jetbrains.idea.maven.utils.MavenUtil;
|
||||
import org.jetbrains.jps.maven.compiler.MavenEscapeWindowsCharacterUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@@ -236,18 +237,9 @@ public class MavenPropertyResolver {
|
||||
}
|
||||
|
||||
if ("java.home".equals(propName)) {
|
||||
Module module = projectsManager.findModule(mavenProject);
|
||||
if (module != null) {
|
||||
Sdk sdk = ModuleRootManager.getInstance(module).getSdk();
|
||||
if (sdk != null) {
|
||||
VirtualFile homeDirectory = sdk.getHomeDirectory();
|
||||
if (homeDirectory != null) {
|
||||
VirtualFile jreDir = homeDirectory.findChild("jre");
|
||||
if (jreDir != null) {
|
||||
return jreDir.getPath();
|
||||
}
|
||||
}
|
||||
}
|
||||
String jreDir = MavenUtil.getModuleJre(projectsManager, mavenProject);
|
||||
if (jreDir != null) {
|
||||
return jreDir;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-14
@@ -20,9 +20,6 @@ import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||
import com.intellij.lang.properties.IProperty;
|
||||
import com.intellij.lang.properties.PropertiesLanguage;
|
||||
import com.intellij.lang.properties.psi.PropertiesFile;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.pom.Navigatable;
|
||||
@@ -237,20 +234,11 @@ public class MavenPropertyPsiReference extends MavenPsiReference {
|
||||
|
||||
@Nullable
|
||||
private PsiElement resolveToJavaHome(@NotNull MavenProject mavenProject) {
|
||||
Module module = myProjectsManager.findModule(mavenProject);
|
||||
if (module == null) return null;
|
||||
|
||||
Sdk sdk = ModuleRootManager.getInstance(module).getSdk();
|
||||
if (sdk == null) return null;
|
||||
|
||||
VirtualFile homeDirectory = sdk.getHomeDirectory();
|
||||
if (homeDirectory == null) return null;
|
||||
|
||||
VirtualFile jreDir = homeDirectory.findChild("jre");
|
||||
String jreDir = MavenUtil.getModuleJre(myProjectsManager, mavenProject);
|
||||
if (jreDir == null) return null;
|
||||
|
||||
PsiFile propFile = PsiFileFactory.getInstance(myProject).createFileFromText("SystemProperties.properties", PropertiesLanguage.INSTANCE,
|
||||
"java.home=" + jreDir.getPath());
|
||||
"java.home=" + jreDir);
|
||||
|
||||
return ((PropertiesFile)propFile).getProperties().get(0).getPsiElement();
|
||||
}
|
||||
|
||||
+8
-1
@@ -20,6 +20,7 @@ import org.jetbrains.idea.maven.dom.references.MavenFilteredPropertyPsiReference
|
||||
import org.jetbrains.idea.maven.model.MavenId;
|
||||
import org.jetbrains.idea.maven.model.MavenResource;
|
||||
import org.jetbrains.idea.maven.utils.MavenJDOMUtil;
|
||||
import org.jetbrains.idea.maven.utils.MavenUtil;
|
||||
import org.jetbrains.jps.maven.model.impl.MavenIdBean;
|
||||
import org.jetbrains.jps.maven.model.impl.MavenModuleResourceConfiguration;
|
||||
import org.jetbrains.jps.maven.model.impl.MavenProjectConfiguration;
|
||||
@@ -116,6 +117,7 @@ public class MavenResourceCompilerConfigurationGenerator {
|
||||
addResources(resourceConfig.resources, mavenProject.getResources());
|
||||
addResources(resourceConfig.testResources, mavenProject.getTestResources());
|
||||
resourceConfig.filteringExclusions.addAll(MavenProjectsTree.getFilterExclusions(mavenProject));
|
||||
|
||||
final Properties properties = getFilteringProperties(mavenProject);
|
||||
for (Map.Entry<Object, Object> propEntry : properties.entrySet()) {
|
||||
resourceConfig.properties.put((String)propEntry.getKey(), (String)propEntry.getValue());
|
||||
@@ -158,7 +160,7 @@ public class MavenResourceCompilerConfigurationGenerator {
|
||||
});
|
||||
}
|
||||
|
||||
private static Properties getFilteringProperties(MavenProject mavenProject) {
|
||||
private Properties getFilteringProperties(MavenProject mavenProject) {
|
||||
final Properties properties = new Properties();
|
||||
|
||||
for (String each : mavenProject.getFilters()) {
|
||||
@@ -179,6 +181,11 @@ public class MavenResourceCompilerConfigurationGenerator {
|
||||
|
||||
properties.put("settings.localRepository", mavenProject.getLocalRepository().getAbsolutePath());
|
||||
|
||||
String jreDir = MavenUtil.getModuleJre(myMavenProjectsManager, mavenProject);
|
||||
if (jreDir != null) {
|
||||
properties.put("java.home", jreDir);
|
||||
}
|
||||
|
||||
return properties;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,12 +33,15 @@ import com.intellij.openapi.application.impl.LaterInvocator;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.progress.Task;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.startup.StartupManager;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
@@ -787,4 +790,25 @@ public class MavenUtil {
|
||||
|
||||
return (int)crc.getValue();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String getModuleJre(@NotNull MavenProjectsManager mavenProjectsManager, @NotNull MavenProject mavenProject) {
|
||||
Module module = mavenProjectsManager.findModule(mavenProject);
|
||||
if (module == null) return null;
|
||||
|
||||
Sdk sdk = ModuleRootManager.getInstance(module).getSdk();
|
||||
if (sdk == null) return null;
|
||||
|
||||
VirtualFile homeDirectory = sdk.getHomeDirectory();
|
||||
if (homeDirectory == null) return null;
|
||||
|
||||
if (!"jre".equals(homeDirectory.getName())) {
|
||||
VirtualFile jreDir = homeDirectory.findChild("jre");
|
||||
if (jreDir != null) {
|
||||
homeDirectory = jreDir;
|
||||
}
|
||||
}
|
||||
|
||||
return homeDirectory.getPath();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user