我构建了一个maven插件,我修改了它的类加载器,以便能够获取资源并创建我正在执行插件的模块的类的对象。因此,当我在一个模块上执行插件时,一切正常,但是当我运行根项目的构建时,当我在几个子模块上执行它时会出现问题。所以第一次执行很好,但是当它进入第二个模块时,它似乎保留了第一次执行的ClassLoader修改,因为我在2个模块中有2个具有相同名称的文件,我将它们作为资源从ClassLoader它总是加载第一个文件(因为它首先添加)。这让我觉得插件的执行在一个进程中有一个ClassLoader。所以我认为我必须以某种方式在每次执行时重置ClassLoader。所以我尝试的是以下内容:
Thread.currentThread().setContextClassLoader(new URLClassLoader(new URL[0], null));
这是因为我看到当你将它设置为null时它应该使用一个自举的ClassLoader。但不幸的是它没有用。那么有人知道如何重置ClassLoader吗?