前言
项目中多个微服务使用了精简打包方式,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;
}
}