diff --git a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MvnDeployUtil.java b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MvnDeployUtil.java new file mode 100644 index 000000000..4f3909a8b --- /dev/null +++ b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MvnDeployUtil.java @@ -0,0 +1,345 @@ +package cn.stylefeng.roses.kernel.rule.util; + +import cn.hutool.core.io.IoUtil; +import lombok.Getter; +import lombok.Setter; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +/** + * mvn批量处理工具,功能如下 + *
+ * 1. 批量上传指定目录下所有jar到私服
+ * 2. 批量上传指定目录下所有jar到本地仓库
+ *
+ * @author fengshuonan
+ * @date 2022/9/30 21:31
+ */
+@Getter
+@Setter
+public class MvnDeployUtil {
+
+ /**
+ * 所有需要被探测到的目录
+ */
+ private final List
+ * 例如:D:\apache-maven-3.5.4\bin\mvn.cmd
+ */
+ private String mvnExePath;
+
+ /**
+ * 仓库目录,包含需要被推送的压缩包的完整路径
+ *
+ * 一般压缩包中包含了多个目录的jar
+ *
+ * 例如:D:\tmp\needToDeploy.zip
+ */
+ private String targetZipPath;
+
+ /**
+ * maven的settings文件配置路径
+ *
+ * 例如:D:\apache-maven-3.5.4\conf\settings.xml
+ */
+ private String mvnSettingXmlPath;
+
+ /**
+ * 仓库的名称,推送到指定私服的仓库id
+ *
+ * 例如:maven-host-company
+ */
+ private String repositoryId;
+
+ /**
+ * 仓库的url,远程私服的地址
+ *
+ * 例如:http://192.168.1.2:8081/repository/maven-host-company/
+ */
+ private String repositoryUrl;
+
+ public static void main(String[] args) {
+ MvnDeployUtil mvnDeployUtil = new MvnDeployUtil();
+ mvnDeployUtil.setTargetZipPath("D:\\workspace-guns\\roses\\kernel-a-rule\\target");
+ mvnDeployUtil.setMvnExePath("D:\\apache-maven-3.5.4\\bin\\mvn.cmd");
+ mvnDeployUtil.setMvnSettingXmlPath("D:\\apache-maven-3.5.4\\conf\\settings.xml");
+ mvnDeployUtil.setRepositoryId("company-hosted");
+ mvnDeployUtil.setRepositoryUrl("http://192.168.31.3:8081/repository/company-hosted/");
+ mvnDeployUtil.beginDeploy();
+ }
+
+ /**
+ * 探测pom文件的内容,是否packaging为pom类型
+ *
+ * @author fengshuonan
+ * @date 2022/9/30 21:45
+ */
+ public static boolean packagingIsPomFlag(File pom) {
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new InputStreamReader(new FileInputStream(pom)));
+ String line;
+ while ((line = reader.readLine()) != null) {
+ if (line.trim().contains("
+ * 判断目录下是否有可以上传的jar
+ *
+ * @author fengshuonan
+ * @date 2022/9/30 21:33
+ */
+ private enum DirectoryType {
+ /**
+ * 目录下jar和pom都没有
+ */
+ NONE,
+
+ /**
+ * 目录下只有pom
+ */
+ POM,
+
+ /**
+ * 目录下同时有jar和pom文件
+ */
+ JAR_AND_POM
+ }
+
+ /**
+ * 可以被mvn上传的文件类型
+ *
+ * @author fengshuonan
+ * @date 2022/9/30 21:34
+ */
+ private enum FileType {
+
+ /**
+ * jar文件
+ */
+ JAR,
+
+ /**
+ * pom文件
+ */
+ POM
+ }
+
+}