From 66ea617c5d20e7a97c9638bf5f682c2c3994ce95 Mon Sep 17 00:00:00 2001 From: StarBlues Date: Sun, 4 Sep 2022 19:39:38 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8F=92=E4=BB=B6load?= =?UTF-8?q?=E8=A7=A3=E5=8E=8B=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gitee/starblues/common/Constants.java | 2 + .../com/gitee/starblues/utils/FilesUtils.java | 73 ++++++++++++++++++- .../plugin/pack/prod/ZipProdRepackager.java | 6 +- .../core/DefaultPluginInsideInfo.java | 3 +- .../starblues/core/DefaultPluginManager.java | 4 +- .../starblues/core/PluginLauncherManager.java | 1 + .../com/gitee/starblues/core/PluginState.java | 7 +- .../NestedPluginJarResourceLoader.java | 5 +- .../AbstractPluginDescriptorLoader.java | 55 +++++++++----- .../descriptor/DevPluginDescriptorLoader.java | 2 +- .../ProdPackagePluginDescriptorLoader.java | 14 +++- .../operator/PluginOperatorWrapper.java | 2 +- .../starblues/utils/PluginFileUtils.java | 45 ++++++++---- update.md | 6 +- 14 files changed, 176 insertions(+), 49 deletions(-) diff --git a/spring-brick-common/src/main/java/com/gitee/starblues/common/Constants.java b/spring-brick-common/src/main/java/com/gitee/starblues/common/Constants.java index 2151f6c..481b524 100644 --- a/spring-brick-common/src/main/java/com/gitee/starblues/common/Constants.java +++ b/spring-brick-common/src/main/java/com/gitee/starblues/common/Constants.java @@ -16,6 +16,8 @@ package com.gitee.starblues.common; +import java.io.File; + /** * 静态常量 * @author starBlues diff --git a/spring-brick-common/src/main/java/com/gitee/starblues/utils/FilesUtils.java b/spring-brick-common/src/main/java/com/gitee/starblues/utils/FilesUtils.java index 34b06d3..78455f5 100644 --- a/spring-brick-common/src/main/java/com/gitee/starblues/utils/FilesUtils.java +++ b/spring-brick-common/src/main/java/com/gitee/starblues/utils/FilesUtils.java @@ -17,6 +17,7 @@ package com.gitee.starblues.utils; import com.gitee.starblues.common.Constants; +import com.gitee.starblues.common.PackageStructure; import java.io.File; import java.io.IOException; @@ -43,6 +44,18 @@ public class FilesUtils { return null; } + /** + * 是否存在文件 + * @param path 文件路径 + * @return boolean + */ + public static boolean existFile(String path){ + if(ObjectUtils.isEmpty(path)){ + return false; + } + return new File(path).exists(); + } + /** * 拼接file路径 @@ -50,7 +63,48 @@ public class FilesUtils { * @param paths 拼接的路径 * @return 拼接的路径 */ - public static String joiningFilePath(String ...paths){ + public static String joiningFilePath(String ...paths) { + if (paths == null || paths.length == 0) { + return ""; + } + StringBuilder stringBuilder = new StringBuilder(); + int length = paths.length; + for (int i = 0; i < length; i++) { + String path = paths[i]; + if (ObjectUtils.isEmpty(path)) { + continue; + } + if (i < length - 1) { + if (path.endsWith("/")) { + path = path.replace("/", ""); + } else if (path.endsWith("\\")) { + path = path.replace("\\", ""); + } else if (path.endsWith("//")) { + path = path.replace("//", ""); + } + } + if (i > 0) { + if (path.startsWith(File.separator) || path.startsWith("/") || + path.startsWith("\\") || path.startsWith("//")) { + stringBuilder.append(path); + } else { + stringBuilder.append(File.separator).append(path); + } + } else { + stringBuilder.append(path); + } + } + + return stringBuilder.toString(); + } + + /** + * 拼接 zip /jar 路径 + * + * @param paths 拼接的路径 + * @return 拼接的路径 + */ + public static String joiningZipPath(String ...paths){ if(paths == null || paths.length == 0){ return ""; } @@ -61,12 +115,20 @@ public class FilesUtils { if(ObjectUtils.isEmpty(path)) { continue; } + if(i < length - 1){ + if(path.endsWith("/")){ + path = path.replace("/", ""); + } else if(path.endsWith("\\")){ + path = path.replace("\\", ""); + } else if(path.endsWith("//")){ + path = path.replace("//", ""); + } + } if(i > 0){ - if(path.startsWith(File.separator) || path.startsWith("/") || - path.startsWith("\\") || path.startsWith("//")){ + if(path.startsWith(PackageStructure.SEPARATOR)){ stringBuilder.append(path); } else { - stringBuilder.append(File.separator).append(path); + stringBuilder.append(PackageStructure.SEPARATOR).append(path); } } else { stringBuilder.append(path); @@ -79,6 +141,9 @@ public class FilesUtils { public static File createFile(String path) throws IOException { try { File file = new File(path); + if(file.exists()){ + return file; + } File parentFile = file.getParentFile(); if(!parentFile.exists()){ if(!parentFile.mkdirs()){ diff --git a/spring-brick-maven-packager/src/main/java/com/gitee/starblues/plugin/pack/prod/ZipProdRepackager.java b/spring-brick-maven-packager/src/main/java/com/gitee/starblues/plugin/pack/prod/ZipProdRepackager.java index 303fd54..55ca154 100644 --- a/spring-brick-maven-packager/src/main/java/com/gitee/starblues/plugin/pack/prod/ZipProdRepackager.java +++ b/spring-brick-maven-packager/src/main/java/com/gitee/starblues/plugin/pack/prod/ZipProdRepackager.java @@ -174,8 +174,10 @@ public class ZipProdRepackager extends DevRepackager { if(filterArtifact(artifact)){ continue; } - String dependencyIndexName = packageZip.writeDependency(artifact.getFile(), libDirEntryName); - dependencyIndexNames.add(dependencyIndexName); + File artifactFile = artifact.getFile(); + packageZip.writeDependency(artifactFile, libDirEntryName); + // fix 解决依赖前缀携带, lib 配置的前缀 + dependencyIndexNames.add(artifactFile.getName()); } return dependencyIndexNames; } diff --git a/spring-brick/src/main/java/com/gitee/starblues/core/DefaultPluginInsideInfo.java b/spring-brick/src/main/java/com/gitee/starblues/core/DefaultPluginInsideInfo.java index c1374eb..1fdaf5b 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/core/DefaultPluginInsideInfo.java +++ b/spring-brick/src/main/java/com/gitee/starblues/core/DefaultPluginInsideInfo.java @@ -20,6 +20,7 @@ import com.gitee.starblues.core.descriptor.InsidePluginDescriptor; import com.gitee.starblues.utils.Assert; import lombok.Setter; +import java.util.Collections; import java.util.Date; import java.util.Map; import java.util.function.Supplier; @@ -39,7 +40,7 @@ public class DefaultPluginInsideInfo implements PluginInsideInfo { private Date startTime; private Date stopTime; - private Supplier> extensionInfoSupplier; + private Supplier> extensionInfoSupplier = Collections::emptyMap; public DefaultPluginInsideInfo(InsidePluginDescriptor pluginDescriptor) { this.pluginId = pluginDescriptor.getPluginId(); diff --git a/spring-brick/src/main/java/com/gitee/starblues/core/DefaultPluginManager.java b/spring-brick/src/main/java/com/gitee/starblues/core/DefaultPluginManager.java index 047dc45..392d847 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/core/DefaultPluginManager.java +++ b/spring-brick/src/main/java/com/gitee/starblues/core/DefaultPluginManager.java @@ -180,6 +180,7 @@ public class DefaultPluginManager implements PluginManager{ if(pluginInsideInfo == null){ throw new PluginException("非法插件包: " + pluginPath); } + pluginInsideInfo.setPluginState(PluginState.PARSED); return pluginInsideInfo.toPluginInfo(); } @@ -350,7 +351,7 @@ public class DefaultPluginManager implements PluginManager{ if(ObjectUtils.isEmpty(pluginId)){ return null; } - PluginInsideInfo pluginInsideInfo = startedPlugins.get(pluginId); + PluginInsideInfo pluginInsideInfo = getPlugin(pluginId); if(pluginInsideInfo == null){ throw new PluginException("没有发现插件: " + pluginId); } @@ -546,7 +547,6 @@ public class DefaultPluginManager implements PluginManager{ pluginInsideInfo.setPluginState(PluginState.STOPPED); stopFinish(pluginInsideInfo); } - /** * 停止完成操作 * @param pluginInsideInfo pluginInsideInfo diff --git a/spring-brick/src/main/java/com/gitee/starblues/core/PluginLauncherManager.java b/spring-brick/src/main/java/com/gitee/starblues/core/PluginLauncherManager.java index c64a2b1..0ec8340 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/core/PluginLauncherManager.java +++ b/spring-brick/src/main/java/com/gitee/starblues/core/PluginLauncherManager.java @@ -121,6 +121,7 @@ public class PluginLauncherManager extends DefaultPluginManager{ @Override protected void stop(PluginInsideInfo pluginInsideInfo, boolean isUninstall) throws Exception { + launcherChecker.checkCanStop(pluginInsideInfo); String pluginId = pluginInsideInfo.getPluginId(); RegistryPluginInfo registryPluginInfo = registryInfo.get(pluginId); if(registryPluginInfo == null){ diff --git a/spring-brick/src/main/java/com/gitee/starblues/core/PluginState.java b/spring-brick/src/main/java/com/gitee/starblues/core/PluginState.java index ff12458..1af14d0 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/core/PluginState.java +++ b/spring-brick/src/main/java/com/gitee/starblues/core/PluginState.java @@ -51,7 +51,12 @@ public enum PluginState { /** * 停止失败状态 */ - STOPPED_FAILURE("STOPPED_FAILURE"); + STOPPED_FAILURE("STOPPED_FAILURE"), + + /** + * 被解析状态. 仅仅用于解析插件后被展示的状态 + */ + PARSED("PARSED"); private final String status; diff --git a/spring-brick/src/main/java/com/gitee/starblues/core/classloader/NestedPluginJarResourceLoader.java b/spring-brick/src/main/java/com/gitee/starblues/core/classloader/NestedPluginJarResourceLoader.java index df179b0..c09c2cc 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/core/classloader/NestedPluginJarResourceLoader.java +++ b/spring-brick/src/main/java/com/gitee/starblues/core/classloader/NestedPluginJarResourceLoader.java @@ -23,7 +23,9 @@ import com.gitee.starblues.core.descriptor.InsidePluginDescriptor; import com.gitee.starblues.loader.classloader.*; import com.gitee.starblues.loader.classloader.resource.loader.*; import com.gitee.starblues.loader.classloader.resource.storage.ResourceStorage; +import com.gitee.starblues.utils.FilesUtils; import com.gitee.starblues.utils.MsgUtils; +import com.gitee.starblues.utils.ObjectUtils; import lombok.extern.slf4j.Slf4j; import java.io.InputStream; @@ -92,7 +94,8 @@ public class NestedPluginJarResourceLoader extends AbstractResourceLoader { Set pluginLibInfos = pluginDescriptor.getPluginLibInfo(); String pluginUnique = MsgUtils.getPluginUnique(pluginDescriptor); for (PluginLibInfo pluginLibInfo : pluginLibInfos) { - jarEntry = jarFile.getJarEntry(pluginLibInfo.getPath()); + String entryName = pluginLibInfo.getPath(); + jarEntry = jarFile.getJarEntry(entryName); if(jarEntry == null){ log.debug("Not found: " + pluginLibInfo.getPath()); continue; diff --git a/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/AbstractPluginDescriptorLoader.java b/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/AbstractPluginDescriptorLoader.java index d9d48f1..9178842 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/AbstractPluginDescriptorLoader.java +++ b/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/AbstractPluginDescriptorLoader.java @@ -155,13 +155,13 @@ public abstract class AbstractPluginDescriptorLoader implements PluginDescriptor } protected Set getPluginLibInfo(DefaultInsidePluginDescriptor descriptor, Set dependenciesIndex){ - String pluginLibDir = descriptor.getPluginLibDir(); - boolean configPluginLibDir = false; - if(!ObjectUtils.isEmpty(pluginLibDir)){ - String libDir = getLibDir(descriptor, pluginLibDir); + String configPluginLibDir = descriptor.getPluginLibDir(); + boolean isConfigPluginLibDir = false; + if(!ObjectUtils.isEmpty(configPluginLibDir)){ + String libDir = getLibDir(descriptor, configPluginLibDir); if(!ObjectUtils.isEmpty(libDir)){ descriptor.setPluginLibDir(libDir); - configPluginLibDir = true; + isConfigPluginLibDir = true; } } if(ObjectUtils.isEmpty(dependenciesIndex)){ @@ -177,8 +177,8 @@ public abstract class AbstractPluginDescriptorLoader implements PluginDescriptor loadToMain = false; } String libPath = index; - if(configPluginLibDir){ - libPath = getLibPath(descriptor, index); + if(isConfigPluginLibDir){ + libPath = getLibPath(descriptor, configPluginLibDir, index); } pluginLibInfos.add(new PluginLibInfo(libPath, loadToMain)); } @@ -186,30 +186,49 @@ public abstract class AbstractPluginDescriptorLoader implements PluginDescriptor } protected String getLibDir(DefaultInsidePluginDescriptor descriptor, String configPluginLibDir){ - if(!FilesUtils.isRelativePath(configPluginLibDir)){ + if(FilesUtils.existFile(configPluginLibDir)){ return configPluginLibDir; } - // 是相对路径 - // 先相对当前插件目录 - String resolveRelativePath = FilesUtils.resolveRelativePath(descriptor.getPluginPath(), configPluginLibDir); - if(new File(resolveRelativePath).exists()){ + // 先检查插件相对目录 + String resolveRelativePath = null; + if(FilesUtils.isRelativePath(configPluginLibDir)){ + // 先相对当前插件目录 + resolveRelativePath = FilesUtils.resolveRelativePath(descriptor.getPluginPath(), configPluginLibDir); + } else { + resolveRelativePath = FilesUtils.joiningFilePath(descriptor.getPluginPath(), configPluginLibDir); + } + if(FilesUtils.existFile(resolveRelativePath)){ return resolveRelativePath; } // 再相对插件存放目录 - resolveRelativePath = FilesUtils.resolveRelativePath(new File(descriptor.getPluginPath()).getParent(), configPluginLibDir); - if(new File(resolveRelativePath).exists()){ + resolveRelativePath = FilesUtils.joiningFilePath(new File(descriptor.getPluginPath()).getParent(), configPluginLibDir); + if(FilesUtils.existFile(resolveRelativePath)){ return resolveRelativePath; } // 最后相对主程序目录 - resolveRelativePath = FilesUtils.resolveRelativePath(new File("").getAbsolutePath(), configPluginLibDir); - if(new File(resolveRelativePath).exists()){ + resolveRelativePath = FilesUtils.joiningFilePath(new File("").getAbsolutePath(), configPluginLibDir); + if(FilesUtils.existFile(resolveRelativePath)){ return resolveRelativePath; } return null; } - protected String getLibPath(DefaultInsidePluginDescriptor descriptor, String index){ - return FilesUtils.joiningFilePath(descriptor.getPluginLibDir(), index); + protected String getLibPath(DefaultInsidePluginDescriptor descriptor, String configPluginLibDir, String index){ + String pluginLibDir = descriptor.getPluginLibDir(); + if(ObjectUtils.isEmpty(pluginLibDir)){ + return index; + } + String joiningFilePath = FilesUtils.joiningFilePath(descriptor.getPluginLibDir(), index); + if(index.startsWith(configPluginLibDir)){ + // 如果 index 中前缀配置了 PLUGIN.META 中的 plugin.libDir 则尝试判断完整拼接的依赖路径文件是否存在 + // 如果存在, 则返回, 如果不存在, 则去掉重复前缀, 返回。该处是为了兼容解压后的jar中index存在 libDir 前缀 + if(FilesUtils.existFile(joiningFilePath)){ + return joiningFilePath; + } + return FilesUtils.joiningFilePath(descriptor.getPluginLibDir(), + index.replace(configPluginLibDir, "")); + } + return joiningFilePath; } protected Properties getDecryptProperties(InputStream inputStream) throws Exception{ diff --git a/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/DevPluginDescriptorLoader.java b/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/DevPluginDescriptorLoader.java index 432e9fc..f759177 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/DevPluginDescriptorLoader.java +++ b/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/DevPluginDescriptorLoader.java @@ -58,7 +58,7 @@ public class DevPluginDescriptorLoader extends AbstractPluginDescriptorLoader{ } @Override - protected String getLibPath(DefaultInsidePluginDescriptor descriptor, String index) { + protected String getLibPath(DefaultInsidePluginDescriptor descriptor, String configPluginLibDir, String index) { return index; } diff --git a/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/ProdPackagePluginDescriptorLoader.java b/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/ProdPackagePluginDescriptorLoader.java index 4721da3..8740c64 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/ProdPackagePluginDescriptorLoader.java +++ b/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/ProdPackagePluginDescriptorLoader.java @@ -90,11 +90,19 @@ public class ProdPackagePluginDescriptorLoader extends AbstractPluginDescriptorL } @Override - protected String getLibPath(DefaultInsidePluginDescriptor descriptor, String index) { + protected String getLibPath(DefaultInsidePluginDescriptor descriptor, String configPluginLibDir, String index) { if(PluginType.isNestedPackage(descriptor.getType())){ - return index; + String pluginLibDir = descriptor.getPluginLibDir(); + if(ObjectUtils.isEmpty(pluginLibDir)){ + return index; + } + if(index.startsWith(configPluginLibDir)){ + // 兼容解决旧版本中 jar/zip 包中, 依赖前缀携带 配置的 lib 路径 + return index; + } + return FilesUtils.joiningZipPath(pluginLibDir, index); } else { - return super.getLibPath(descriptor, index); + return super.getLibPath(descriptor, configPluginLibDir, index); } } diff --git a/spring-brick/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java b/spring-brick/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java index aaf9007..130e2ce 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java +++ b/spring-brick/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java @@ -99,7 +99,7 @@ public class PluginOperatorWrapper implements PluginOperator{ if(isDisable()){ return null; } - return pluginOperator.install(pluginPath, unpackPlugin); + return pluginOperator.load(pluginPath, unpackPlugin); } @Override diff --git a/spring-brick/src/main/java/com/gitee/starblues/utils/PluginFileUtils.java b/spring-brick/src/main/java/com/gitee/starblues/utils/PluginFileUtils.java index 3e1423e..fb01b0d 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/utils/PluginFileUtils.java +++ b/spring-brick/src/main/java/com/gitee/starblues/utils/PluginFileUtils.java @@ -17,7 +17,9 @@ package com.gitee.starblues.utils; +import com.gitee.starblues.common.ManifestKey; import com.gitee.starblues.common.PackageStructure; +import com.gitee.starblues.common.PackageType; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; @@ -32,6 +34,7 @@ import java.nio.file.Paths; import java.security.MessageDigest; import java.util.Enumeration; import java.util.List; +import java.util.Objects; import java.util.jar.Attributes; import java.util.jar.Manifest; import java.util.zip.ZipEntry; @@ -41,7 +44,8 @@ import java.util.zip.ZipFile; * 插件文件工具类 * * @author starBlues - * @version 3.0.0 + * @since 3.0.0 + * @version 3.1.0 */ public final class PluginFileUtils { @@ -187,7 +191,9 @@ public final class PluginFileUtils { } File targetDirFile = new File(targetDir); if(!targetDirFile.exists()){ - targetDirFile.mkdirs(); + if(!targetDirFile.mkdirs()){ + throw new IOException("创建目录异常: " + targetDir); + } } try (ZipFile zip = new ZipFile(zipFile, Charset.forName(PackageStructure.CHARSET_NAME))) { Enumeration zipEnumeration = zip.entries(); @@ -201,23 +207,34 @@ public final class PluginFileUtils { if (zipEntry.isDirectory()) { FileUtils.forceMkdir(new File(currentTargetPath)); continue; + } else { + FilesUtils.createFile(currentTargetPath); } - InputStream in = null; - FileOutputStream out = null; - try { - in = zip.getInputStream(zipEntry); - out = new FileOutputStream(currentTargetPath); - IOUtils.copy(in, out); - } finally { - if (in != null) { - IOUtils.closeQuietly(in); - } - if (out != null) { - IOUtils.closeQuietly(out); + try (InputStream in = zip.getInputStream(zipEntry); + FileOutputStream out = new FileOutputStream(currentTargetPath)){ + if(PackageStructure.PROD_MANIFEST_PATH.equals(zipEntryName)){ + // 如果为 Manifest 文件, 则将打包类型切换为 xx-outer + resolveDecompressPluginType(in, out); + } else { + IOUtils.copy(in, out); } } } } } + + private static void resolveDecompressPluginType(InputStream inputStream, OutputStream outputStream) throws IOException{ + Manifest manifest = new Manifest(inputStream); + Attributes mainAttributes = manifest.getMainAttributes(); + String value = mainAttributes.getValue(ManifestKey.PLUGIN_PACKAGE_TYPE); + if(Objects.equals(value, PackageType.MAIN_PACKAGE_TYPE_JAR)){ + value = PackageType.PLUGIN_PACKAGE_TYPE_DIR; + } else if(Objects.equals(value, PackageType.PLUGIN_PACKAGE_TYPE_ZIP)){ + value = PackageType.PLUGIN_PACKAGE_TYPE_DIR; + } + mainAttributes.putValue(ManifestKey.PLUGIN_PACKAGE_TYPE, value); + manifest.write(outputStream); + } + } diff --git a/update.md b/update.md index fc7b034..87c29f1 100644 --- a/update.md +++ b/update.md @@ -7,4 +7,8 @@ 5. 【修复[#I5GJO9](https://gitee.com/starblues/springboot-plugin-framework-parent/issues/I5GJO9)】`DefaultPluginManager#install` 异常无法抛出 6. 【修复】修复插件无法加载其他包依赖中的`mybatis-xml`问题 7. 【修复】修复插件子启动问题 -8. 【优化】优化依赖资源默认不缓存, 以减少内存 +8. 【修复】修复插件`load`解压异常 +9. 【修复】修复`jar`、`zip`加载依赖时未使用`libDir`配置前缀 +10.【优化】优化插件`parse`后为`parsed`状态 +11.【优化】优化依赖资源默认不缓存, 以减少内存 + -- Gitee From a749acfeec0c809f91416caff8cfde03a9421fc7 Mon Sep 17 00:00:00 2001 From: StarBlues Date: Sun, 4 Sep 2022 19:42:18 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B93.1.0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/gitee/starblues/utils/FilesUtils.java | 5 ++++- .../java/com/gitee/starblues/core/PluginLauncherManager.java | 2 +- .../core/descriptor/AbstractPluginDescriptorLoader.java | 3 ++- .../core/descriptor/ProdPackagePluginDescriptorLoader.java | 3 ++- .../integration/operator/PluginOperatorWrapper.java | 3 ++- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/spring-brick-common/src/main/java/com/gitee/starblues/utils/FilesUtils.java b/spring-brick-common/src/main/java/com/gitee/starblues/utils/FilesUtils.java index 78455f5..a057e15 100644 --- a/spring-brick-common/src/main/java/com/gitee/starblues/utils/FilesUtils.java +++ b/spring-brick-common/src/main/java/com/gitee/starblues/utils/FilesUtils.java @@ -26,7 +26,8 @@ import java.io.IOException; * 文件工具类 * * @author starBlues - * @version 3.0.2 + * @since 3.0.0 + * @version 3.1.0 */ public class FilesUtils { @@ -62,6 +63,7 @@ public class FilesUtils { * * @param paths 拼接的路径 * @return 拼接的路径 + * @since 3.0.0 */ public static String joiningFilePath(String ...paths) { if (paths == null || paths.length == 0) { @@ -103,6 +105,7 @@ public class FilesUtils { * * @param paths 拼接的路径 * @return 拼接的路径 + * @since 3.1.0 */ public static String joiningZipPath(String ...paths){ if(paths == null || paths.length == 0){ diff --git a/spring-brick/src/main/java/com/gitee/starblues/core/PluginLauncherManager.java b/spring-brick/src/main/java/com/gitee/starblues/core/PluginLauncherManager.java index 0ec8340..69bf900 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/core/PluginLauncherManager.java +++ b/spring-brick/src/main/java/com/gitee/starblues/core/PluginLauncherManager.java @@ -48,7 +48,7 @@ import java.util.concurrent.ConcurrentHashMap; * 可引导启动的插件管理者 * @author starBlues * @since 3.0.0 - * @version 3.0.3 + * @version 3.1.0 */ public class PluginLauncherManager extends DefaultPluginManager{ diff --git a/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/AbstractPluginDescriptorLoader.java b/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/AbstractPluginDescriptorLoader.java index 9178842..efeb3a0 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/AbstractPluginDescriptorLoader.java +++ b/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/AbstractPluginDescriptorLoader.java @@ -48,7 +48,8 @@ import static com.gitee.starblues.utils.PropertiesUtils.getValue; /** * 抽象的 PluginDescriptorLoader * @author starBlues - * @version 3.0.2 + * @since 3.0.0 + * @version 3.1.0 */ @Slf4j public abstract class AbstractPluginDescriptorLoader implements PluginDescriptorLoader{ diff --git a/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/ProdPackagePluginDescriptorLoader.java b/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/ProdPackagePluginDescriptorLoader.java index 8740c64..a52b8a6 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/ProdPackagePluginDescriptorLoader.java +++ b/spring-brick/src/main/java/com/gitee/starblues/core/descriptor/ProdPackagePluginDescriptorLoader.java @@ -42,7 +42,8 @@ import static com.gitee.starblues.common.PluginDescriptorKey.PLUGIN_RESOURCES_CO * 生产环境打包好的插件 PluginDescriptorLoader 加载者 * 解析 jar、zip * @author starBlues - * @version 3.0.2 + * @since 3.0.0 + * @version 3.1.0 */ public class ProdPackagePluginDescriptorLoader extends AbstractPluginDescriptorLoader{ diff --git a/spring-brick/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java b/spring-brick/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java index 130e2ce..c96554b 100644 --- a/spring-brick/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java +++ b/spring-brick/src/main/java/com/gitee/starblues/integration/operator/PluginOperatorWrapper.java @@ -31,7 +31,8 @@ import java.util.List; /** * 插件操作包装者 * @author starBlues - * @version 3.0.0 + * @since 3.0.0 + * @version 3.1.0 */ public class PluginOperatorWrapper implements PluginOperator{ -- Gitee