54 lines
1.8 KiB
Java
54 lines
1.8 KiB
Java
package io.dataease.plugins.config;
|
|
|
|
import io.dataease.base.domain.MyPlugin;
|
|
import io.dataease.commons.utils.DeFileUtils;
|
|
import io.dataease.controller.sys.base.BaseGridRequest;
|
|
import io.dataease.service.sys.PluginService;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.boot.ApplicationArguments;
|
|
import org.springframework.boot.ApplicationRunner;
|
|
import org.springframework.stereotype.Component;
|
|
import java.io.File;
|
|
import java.util.List;
|
|
|
|
@Component
|
|
public class PluginRunner implements ApplicationRunner {
|
|
|
|
@Value("${dataease.plugin.dir:/opt/dataease/plugins/}")
|
|
private String pluginDir;
|
|
|
|
@Autowired
|
|
private PluginService pluginService;
|
|
|
|
|
|
|
|
@Override
|
|
public void run(ApplicationArguments args) throws Exception {
|
|
// 执行加载插件逻辑
|
|
BaseGridRequest request = new BaseGridRequest();
|
|
List<MyPlugin> plugins = pluginService.query(request);
|
|
plugins.stream().forEach(plugin -> {
|
|
String name = plugin.getName();
|
|
String version = plugin.getVersion();
|
|
String versionDir = pluginDir + name + "/" + version + "/";
|
|
File fileDir = new File(versionDir);
|
|
File[] jarFiles = fileDir.listFiles(this::isPluginJar);
|
|
File jarFile = jarFiles[0];
|
|
String jarPath = jarFile.getAbsolutePath();
|
|
try {
|
|
pluginService.loadJar(jarPath, plugin);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
private boolean isPluginJar(File file) {
|
|
String name = file.getName();
|
|
return StringUtils.equals(DeFileUtils.getExtensionName(name), "jar");
|
|
}
|
|
}
|