栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Jar批量管理小工具

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jar批量管理小工具

文章目录
  • 前言
  • 一、代码结构
  • 二、开源仓库地址
  • 总结

前言

一个Jar包管理的小工具,目前有如下几个作用,后面可以慢慢扩展

1.搜索当前项目路径下的所有jar并复制到某一路径下

2.执行某个目录下的jar包批量运行启动

3.Kill所有java进程

一、代码结构

这些功能后面可以自行慢慢扩展,我目前只做到了我需要的那部分,首先看看文件处理

JarManagerApplication

package com.ljm;


import com.ljm.play.One;
import com.ljm.play.Two;
import java.io.IOException;
import java.util.Scanner;


public class JarManagerApplication {

    public static void main(String[] args) {
        menu();
        String InputStr = null;
        // 创建一个扫描器对象 用于接收键盘数据
        Scanner scannerShow = new Scanner(System.in);
        while (!scannerShow.hasNext() == true) {
            // 等待用户输入
        }
        InputStr = scannerShow.next();
        System.out.println("您输入的功能项是:" + InputStr);
        switch (InputStr) {
            case "1":
                // 1.搜索当前项目路径下的所有jar并复制到某一路径下
                One.selectMethod();
                One.copyMethod();
                break;
            case "2":
                // 2.执行某个目录下的jar包批量运行启动
                Two.runJar();
                break;
            case "3":
                // 3.kill所有java进程
                break;
            default:
                System.out.println("===参数错误===");
                break;
        }
        // 程序退出
        System.exit(0);
    }

    
    public static void menu() {
        System.out.println("一个JAR管理小脚本-----");
        System.out.println("请输入功能项(数字):");
        System.out.println("1.搜索当前项目路径下的所有jar并复制到某一路径下");
        System.out.println("2.执行某个目录下的jar包批量运行启动");
        System.out.println("3.kill所有java进程");
        System.out.println();
    }
}

One

package com.ljm.play;

import com.ljm.handle.FileHandler;
import java.io.IOException;
import java.util.List;
import java.util.Scanner;

public class One {

    
    public static void selectMethod() {
        // E:44_JAVA_Protect杭州地铁hangzhou-metro-server-new
        String pathInputStr = "";
        // 创建一个扫描器对象 用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入项目路径:");
        // 判断用户有没有输入字符串
        if (scanner.hasNext() == true) {
            pathInputStr = scanner.next();
            System.out.println("您输入的路径是:" + pathInputStr);
        }
        // 搜索
        FileHandler.getBladeJar(pathInputStr);
    }

    
    public static void copyMethod() {
        // 目录位置
        String pathInputStr = "";
        // 创建一个扫描器对象 用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要复制的路径:");
        // 判断用户有没有输入字符串
        if (scanner.hasNext() == true) {
            pathInputStr = scanner.next();
            System.out.println("您输入的路径是:" + pathInputStr);
        }

        List bladeJarPathList = FileHandler.getBladeJarPathList();
        List bladeJarNameList = FileHandler.getBladeJarNameList();
        System.out.println("开始复制.......");
        for (int i = 0; i < bladeJarPathList.size(); i++) {
            String sPath = bladeJarPathList.get(i);
            String sName = pathInputStr + "\" + bladeJarNameList.get(i);
            try {
                FileHandler.copy(sPath, sName);
                System.out.println("已复制文件:" + (i + 1) + "   总数量:" + bladeJarPathList.size());
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }

}

FileHandler

package com.ljm.handle;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


public class FileHandler {


    private static List jarPathList = new ArrayList<>();
    private static List jarNameList = new ArrayList<>();

    
    public static List getBladeJarPathList() {
        return jarPathList;
    }

    
    public static List getBladeJarNameList() {
        return jarNameList;
    }

    
    public static void getBladeJar(String path) {
        File file = new File(path);
        if (file.exists()) {
            File[] files = file.listFiles();
            if (null != files) {
                for (File file2 : files) {
                    if (file2.isDirectory()) {
                        getBladeJar(file2.getAbsolutePath());
                    } else {
                        String file2AbsolutePath = file2.getAbsolutePath();
                        int length = file2AbsolutePath.length();
                        int lastIndexOf = file2AbsolutePath.lastIndexOf(".");
                        if (lastIndexOf <= 0) {
                            continue;
                        }
                        if (file2AbsolutePath.substring(lastIndexOf, length).equals(".jar")) {
                            if (!file2AbsolutePath.contains("common") && !file2AbsolutePath.contains("api") && !file2AbsolutePath.contains("lib")) {
                                jarPathList.add(file2AbsolutePath);
                                jarNameList.add(file2.getName());
                            }
                        }
                    }
                }
            }
        }
    }

    
    public static void copy(String srcPathName, String destPathName) throws IOException {
        // 创建IO流
        // FileInputStream和FileOutputStream
        FileInputStream fis = new FileInputStream(srcPathName);
        FileOutputStream fos = new FileOutputStream(destPathName);
        // 从fis流中读取数据,写到fos流中
        byte[] data = new byte[10];
        int len;
        while ((len = fis.read(data)) != -1) {
            fos.write(data, 0, len);
        }
        // 关闭
        fis.close();
        fos.close();
    }
}

上面通篇代码总结下来就几个功能点

  1. 搜索某个路径下的某个后缀的文件
  2. 复制文件
  3. IO流

然后看看批量执行脚本启动的代码

package com.ljm.play;

import com.ljm.handle.FileHandler;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Two {

    
    public static void runJar() {
        String pathInputStr = "";
        // 创建一个扫描器对象 用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入JAR路径:");
        // 判断用户有没有输入字符串
        if (scanner.hasNext() == true) {
            pathInputStr = scanner.next();
            System.out.println("您输入的路径是:" + pathInputStr);
        }
        // 搜索
        FileHandler.getBladeJar(pathInputStr);
        List jarPathList = FileHandler.getBladeJarPathList();
        // cmd
        try {
            FileWriter fileWriter = new FileWriter(pathInputStr + "\" + "start.bat");
            fileWriter.append("@echo off n");
            fileWriter.append("n");
            for (String strP : jarPathList) {
                fileWriter.append("start java -d64 -server -Xms512m -Xmx2048m -jar " + strP + "n");
                fileWriter.append("choice /t 10 /d y /n > null " + "n");
                fileWriter.append("n");
            }
            fileWriter.flush();
            fileWriter.close();
            Process p = Runtime.getRuntime().exec("cmd /c " + pathInputStr + "\" + "start.bat");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

真香,缺点就是路径要全英文,这个还没解决,晚点。

二、开源仓库地址
地址
官方还在审核,待定
总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1002807.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号