项目打包后汇总 所有 jar 和 增量 jar

2021年07月19日 135点热度 0人点赞 0条评论

前言

项目中多个微服务使用了精简打包方式,lib 包外置,现在就需要把各个子模块的 lib 包汇总到一起,并且获取到最新多出来的 jar 文件,用到下面一段命令,这里记录下来备用。

其中
projectPath 为项目所在地址
libsPath 为全量 lib jar 包
newlibsPath 为和 libsPath 比较后 多出来的 jar

命令

package com.pip;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.nio.file.Files;

/**
 * 拷贝项目 lib 包
 *
 * @author: ChengQichuan
 * @email: fushengyicheng@qq.com
 * @time: 2021/7/19 17:06
 */
public class CopyLib {

    /**
     * 项目地址
     */
    static String projectPath;

    /**
     * libs 文件夹地址
     */
    static String libsPath;

    /**
     * newlibs 文件夹地址
     */
    static String newlibsPath;


    public static void main(String[] args) {

        // 获取项目地址 D:\CWork\IdeaProjects\tz\pip-wuhan
        projectPath = System.getProperty("user.dir");
        System.out.println("当前项目地址:" + projectPath);

        libsPath = projectPath + File.separator + "libs";
        newlibsPath = libsPath + File.separator + "newlibs";

        // 创建文件夹
        isExist(libsPath);
        isExist(newlibsPath);
        // 删除所有文件
        delAllFile(newlibsPath);

        File file = new File(projectPath);

        File[] files = file.listFiles();

        for (int i = 0; i < files.length; i++) {
            File file1 = files[i];

            File[] files1 = file1.listFiles(new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                    if (pathname.getName().equals("target")) return true;
                    return false;
                }
            });

            if (files1 != null && files1.length > 0) {
                File[] libs = files1[0].listFiles(new FileFilter() {
                    @Override
                    public boolean accept(File pathname) {
                        if (pathname.getName().equals("libs")) return true;
                        return false;
                    }
                });

                if (libs != null && libs.length > 0) {
                    File[] files2 = libs[0].listFiles();
                    for (int j = 0; j < files2.length; j++) {
                        File dest = new File(libsPath + File.separator + files2[j].getName());
                        File newDest = new File(newlibsPath + File.separator + files2[j].getName());
                        if (!dest.exists()) {
                            try {
                                Files.copy(files2[j].toPath(), dest.toPath());
                                Files.copy(files2[j].toPath(), newDest.toPath());
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }

                    }

                }

            }


        }
    }


    /**
     * 如果文件夹不存在创建文件夹
     * @param filePath
     * @return
     */
    public static boolean isExist(String filePath) {
        String paths[] = filePath.split("\\\\");
        String dir = paths[0];
        for (int i = 0; i < paths.length - 1; i++) {
            try {
                dir = dir + File.separator + paths[i + 1];
                File dirFile = new File(dir);
                if (!dirFile.exists()) {
                    dirFile.mkdir();
                    System.out.println("创建目录为:" + dir);
                }
            } catch (Exception err) {
                System.err.println("ELS - Chart : 文件夹创建发生异常");
            }
        }
        File fp = new File(filePath);
        if (!fp.exists()) {
            // 文件不存在
            return true;
        } else {
            // 文件存在不做处理
            return false;
        }
    }


    /**
     * 删除所有文件
     * @param path
     * @return
     */
    public static boolean delAllFile(String path) {
        boolean flag = false;
        File file = new File(path);
        if (!file.exists()) {
            return flag;
        }
        if (!file.isDirectory()) {
            return flag;
        }
        String[] tempList = file.list();
        File temp = null;
        for (int i = 0; i < tempList.length; i++) {
            if (path.endsWith(File.separator)) {
                temp = new File(path + tempList[i]);
            } else {
                temp = new File(path + File.separator + tempList[i]);
            }
            if (temp.isFile()) {
                temp.delete();

            }
        }
        return flag;

    }


}

效果

浮生一程

读书-行路-悦人-识物