55import com .intellij .openapi .compiler .CompilerManager ;
66import com .intellij .openapi .project .Project ;
77import com .intellij .openapi .roots .OrderEnumerator ;
8+ import com .intellij .openapi .roots .ProjectRootManager ;
89import com .intellij .openapi .ui .Messages ;
910import com .intellij .openapi .util .io .FileUtil ;
11+ import com .intellij .openapi .vfs .VirtualFile ;
1012import com .intellij .util .lang .UrlClassLoader ;
1113import io .github .linyimin .plugin .dom .Constant ;
1214import io .github .linyimin .plugin .utils .JavaUtils ;
1820import java .net .URL ;
1921import java .util .*;
2022import java .util .stream .Collectors ;
23+ import java .util .stream .Stream ;
2124
2225
2326/**
@@ -58,8 +61,8 @@ public static void setClassLoader(Project project) {
5861 changeLoaderUrls (preDependencies , dependencies );
5962 } else {
6063 createProjectLoader (urls );
61- preDependencies = dependencies ;
6264 }
65+ preDependencies = dependencies ;
6366 }
6467
6568 private static List <String > getProjectDependencies (Project project ) {
@@ -76,15 +79,25 @@ private static List<String> getProjectDependencies(Project project) {
7679 .stream ()
7780 .filter (path -> path .contains (Constant .MYBATIS_LOGGING_LOG4J )
7881 || path .contains (Constant .MYBATIS_LOGGING_SLF4J )
79- || path . contains (project . getName ( ))
80- ) .collect (Collectors .toList ());
82+ || isProjectModule (project , path ))
83+ .collect (Collectors .toList ());
8184
8285
8386 list .addAll (mapperDependencies );
8487
8588 return list ;
8689 }
8790
91+ private static boolean isProjectModule (Project project , String path ) {
92+ VirtualFile [] vFiles = ProjectRootManager .getInstance (project ).getContentRootsFromAllModules ();
93+ Set <String > moduleNames = Stream .of (vFiles ).map (VirtualFile ::getName ).collect (Collectors .toSet ());
94+
95+ moduleNames .add (project .getName ());
96+ moduleNames .add (project .getBasePath ());
97+
98+ return moduleNames .stream ().anyMatch (path ::contains );
99+ }
100+
88101 private static void createProjectLoader (List <URL > urls ) {
89102 classLoader = UrlClassLoader .build ().urls (urls ).parent (ClassLoader .getSystemClassLoader ()).get ();
90103 attachPluginParentLoader (classLoader );
@@ -99,14 +112,12 @@ private static void attachPluginParentLoader(UrlClassLoader classLoader) {
99112
100113 try {
101114 field = pluginClassLoaderClass .getDeclaredField (Constant .PLUGIN_CLASS_LOADER_PARENTS );
102- } catch (NoSuchFieldException e ) {
103- e .printStackTrace ();
115+ } catch (NoSuchFieldException ignored ) {
104116 }
105117
106118 try {
107119 field = pluginClassLoaderClass .getDeclaredField (Constant .PLUGIN_CLASS_LOADER_MY_PARENTS );
108- } catch (NoSuchFieldException e ) {
109- e .printStackTrace ();
120+ } catch (NoSuchFieldException ignored ) {
110121 }
111122
112123 if (Objects .isNull (field )) {
0 commit comments