做公司多模块项目时,发现公司原有的模块的配置文件,类加载器都能加载到文件,而自己新建的模块(或者复制的其他模块改名)。项目目录下:(不方便截图)
项目名
#--子模块1
#--子模块2
#--子模块3
#-----子子模块1
#--------子子模块1的pom
#-----子子模块2
#--------子子模块2的pom
#-----自己新建的模块
#--------子子模块 的pom
#-----pom文件
#--子模块4
#--pom文件
其中每一个子子模块都有一个自己对于的plugins.xml配置文件。该文件都放在 每个子模块的resource文件下,
项目中使用的类加载器代码文件如下:
Enumeration<URL> pluginConfigResources = Thread.currentThread().getContextClassloader().getResources("plugin.xml")正常情况下,该语句将会加载 根路径下所有的名字为“plugin.xml”的文件。
1、首先,查看target文件夹是否存在,没有存在的话 build一下。
2、查看target文件夹中是否有“plugin.xml” ,如果没有说明,需要给编译器指明一下哪些是source文件夹,哪些是resource文件夹。idea的structure中可以查看.。这个文件夹的性质还可以通过在pom中添加:也可以指明
<build> <resources> <resource> <directory>src/main/java</dircetory> <includes> <include>**/*.java</include> </includes> <filtering>false<filtering> <resource> <resource> <directory>src/main/resources</dircetory> <includes> <include>**/*.*</include> </includes> <filtering>false<filtering> <resource> </resorces> </build>
3、以上都没问题,而类加载器(java的类加载器会去 里去查找我们的文件名称)死活加载不上,这时看了某个大佬的博客,“构建子模块却无法加载”https://blog.csdn.net/weixin_45151960/article/details/109001773
发现需要在 启动类的pom文件中依赖,我们新建的模块。即使我们新建的模块在它的父模块(该父模块已在启动类模块中添加了依赖)的pom文件中添加 <model>模块名<model>了,我们也要在 启动模块的pom文件中添加,子模块的依赖。
至此,郁闷了几天的事情终于搞定。(遇见的玄学问题,有时候不按上述说的添加子模块依赖,也有可能成功,但很难成功一次,原因不知。。)