mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-85394 IntelliJ should understand Archetypes in Maven project and not try to build the resources directory
This commit is contained in:
+29
@@ -0,0 +1,29 @@
|
||||
package org.jetbrains.idea.maven.utils;
|
||||
|
||||
import com.intellij.codeInsight.daemon.ProblemHighlightFilter;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author Sergey Evdokimov
|
||||
*/
|
||||
public class ArchetypeResourceHighlightFilter extends ProblemHighlightFilter {
|
||||
|
||||
@Override
|
||||
public boolean shouldHighlight(@NotNull PsiFile psiFile) {
|
||||
VirtualFile virtualFile = psiFile.getOriginalFile().getVirtualFile();
|
||||
|
||||
do {
|
||||
if (virtualFile == null) return true;
|
||||
|
||||
if (virtualFile.getName().equals("archetype-resources")) {
|
||||
if (virtualFile.getPath().endsWith("src/main/resources/archetype-resources")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
virtualFile = virtualFile.getParent();
|
||||
} while (true);
|
||||
}
|
||||
}
|
||||
@@ -102,6 +102,8 @@
|
||||
<className>org.jetbrains.idea.maven.dom.intentions.ChooseFileIntentionAction</className>
|
||||
</intentionAction>
|
||||
|
||||
<problemHighlightFilter implementation="org.jetbrains.idea.maven.utils.ArchetypeResourceHighlightFilter" />
|
||||
|
||||
<codeInsight.unresolvedReferenceQuickFixProvider
|
||||
implementation="org.jetbrains.idea.maven.dom.intentions.ResolveReferenceQuickFixProvider"/>
|
||||
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package org.jetbrains.idea.maven.utils
|
||||
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
|
||||
import com.intellij.psi.PsiFile
|
||||
|
||||
/**
|
||||
* @author Sergey Evdokimov
|
||||
*/
|
||||
class MavenArchetypeResourcesHighlightTest extends LightCodeInsightFixtureTestCase {
|
||||
|
||||
public void testHighlight() throws Exception {
|
||||
PsiFile file = myFixture.addFileToProject("src/main/resources/archetype-resources/src/main/java/A.java", """
|
||||
import \${package};
|
||||
class A {
|
||||
}
|
||||
""");
|
||||
myFixture.configureFromExistingVirtualFile(file.getVirtualFile());
|
||||
myFixture.checkHighlighting();
|
||||
|
||||
file = myFixture.addFileToProject("src/main/resources/B.java", """
|
||||
import <error>\$</error><error><error>{</error>package};</error>
|
||||
class B {
|
||||
}
|
||||
""");
|
||||
myFixture.configureFromExistingVirtualFile(file.getVirtualFile());
|
||||
myFixture.checkHighlighting();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user