public static synchronized List<PluginJarParser.PluginJar> loadExtendPlugins(final String path) throws IOException {
        File[] jarFiles = ShenyuPluginPathBuilder.getPluginFile(path).listFiles(file -> file.getName().endsWith(".jar"));
        if (Objects.isNull(jarFiles)) {
            return Collections.emptyList();
        }
        List<PluginJarParser.PluginJar> uploadPluginJars = new ArrayList<>();
        Set<String> currentPaths = new HashSet<>();
        for (File file : jarFiles) {
            String absolutePath = file.getAbsolutePath();
            currentPaths.add(absolutePath);
            if (pluginJarName.contains(absolutePath)) {
                continue;
            }
            byte[] pluginBytes = Files.readAllBytes(Paths.get(absolutePath));
            PluginJarParser.PluginJar uploadPluginJar = PluginJarParser.parseJar(pluginBytes);
            uploadPluginJar.setAbsolutePath(absolutePath);
            uploadPluginJars.add(uploadPluginJar);
        }
        Sets.SetView<String> removePluginSet = Sets.difference(pluginJarName, currentPaths);
        for (String removePath : removePluginSet) {
            ShenyuPluginClassLoaderHolder.getSingleton().removePluginClassLoader(removePath);
        }
        pluginJarName = currentPaths;
        return uploadPluginJars;
    }
Load extend plugins list.

@param path the path
@return the list
@throws IOException the io exception
shenyu-web/src/main/java/org/apache/shenyu/web/loader/ShenyuExtPathPluginJarLoader.java