From 6bcad8f5f71afc625755d7c75009ac3d818956e4 Mon Sep 17 00:00:00 2001 From: Harrison Date: Fri, 10 Jun 2022 14:15:39 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-73331=E3=80=90=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E7=8E=AF=E5=A2=83=E7=9B=91=E6=B5=8B=E3=80=91=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E7=8E=AF=E5=A2=83=E7=BC=BA=E5=B0=91jar=EF=BC=8C?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E6=A3=80=E6=B5=8B=E5=88=B0=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=E8=BF=9C=E7=A8=8B=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E7=BC=BA=E5=B0=91=20JAR=20=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/env/detect/impl/JarLackDetector.java | 47 +++++++++++++++---- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/designer-base/src/main/java/com/fr/env/detect/impl/JarLackDetector.java b/designer-base/src/main/java/com/fr/env/detect/impl/JarLackDetector.java index 8c85da202..a769921b0 100644 --- a/designer-base/src/main/java/com/fr/env/detect/impl/JarLackDetector.java +++ b/designer-base/src/main/java/com/fr/env/detect/impl/JarLackDetector.java @@ -12,6 +12,7 @@ import com.fr.env.detect.bean.ExceptionSolution; import com.fr.env.detect.bean.ExceptionTips; import com.fr.env.detect.bean.Message; import com.fr.general.build.BuildInfo; +import com.fr.general.build.BuildInfoManager; import com.fr.general.build.BuildInfoOperator; import com.fr.general.build.impl.BuildInfoOperatorImpl; import com.fr.third.guava.collect.Lists; @@ -22,6 +23,8 @@ import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.function.Predicate; import java.util.stream.Collectors; /** @@ -42,17 +45,38 @@ public class JarLackDetector extends AbstractExceptionDetector { @Override public DetectorResult detect() { - // 不支持远程 + List lackInfos; + + // 远程 if (!WorkContext.getCurrent().isLocal()) { - return DetectorResult.normal(type()); + // 检测有哪些 JAR 包, 当前是否缺少对应的 JAR 包 + BuildInfoOperator buildInfoOperator = WorkContext.getCurrent().get(BuildInfoOperator.class); + // 远程情况 + List remoteInfos = buildInfoOperator.getBuildInfos(); + // 本地情况 + List localInfos = BuildInfoManager.getInstance().getInfos(); + + Set remoteSet = remoteInfos.stream() + .filter(this::isExistInfo) + .map(BuildInfo::getJar) + .collect(Collectors.toSet()); + + Predicate remoteNotContains = (e) -> !remoteSet.contains(e.getJar()); + + lackInfos = localInfos.stream() + .filter(this::isExistInfo) + .filter(remoteNotContains) + .collect(Collectors.toList()); + + } else { + // 本地 + // 检测有哪些 JAR 包, 当前是否缺少对应的 JAR 包 + BuildInfoOperator buildInfoOperator = new BuildInfoOperatorImpl(); + List buildInfos = buildInfoOperator.getBuildInfos(); + lackInfos = buildInfos.stream() + .filter(this::isLackInfo) + .collect(Collectors.toList()); } - - // 检测有哪些 JAR 包, 当前是否缺少对应的 JAR 包 - BuildInfoOperator buildInfoOperator = new BuildInfoOperatorImpl(); - List buildInfos = buildInfoOperator.getBuildInfos(); - List lackInfos = buildInfos.stream() - .filter(this::isLackInfo) - .collect(Collectors.toList()); if (Collections.isEmpty(lackInfos)) { return DetectorResult.normal(type()); @@ -77,6 +101,11 @@ public class JarLackDetector extends AbstractExceptionDetector { return ExceptionLog.create(Toolkit.i18nText(type().getLogLocale()) + message); } + private boolean isExistInfo(BuildInfo e) { + + return !isLackInfo(e); + } + private boolean isLackInfo(BuildInfo e) { return StringUtils.isEmpty(e.getGroupBuild());