1、建一个读取文件的工具类(我本地案例代码如下)
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
public class ToFileUtils {
/**
* 把一个文件目录存入List集合中
* @param dir
* @param list
*/
public static void toFileList(File dir, List list)
{
File[] fl = dir.listFiles();
for (File f : fl) {
if (f.isDirectory()) {
toFileList(f, list);
} else {
if (f.getName().endsWith(".java")) {
list.add(f);
}
}
}
}
/**
* 把一个集合写入文件中
* @param list
* @param javaListFile
*/
public static void writeToFile(List<File> list, String javaListFile)
{
BufferedWriter bf = null;
try {
bf = new BufferedWriter(new FileWriter(javaListFile));
for (File f : list) {
String path = f.getAbsolutePath();
bf.write(path);
bf.newLine();
bf.flush();
}
} catch (IOException e) {
new RuntimeException(e);
} finally {
try {
if (bf != null) {
bf.close();
}
} catch (IOException e) {
new RuntimeException(e);
}
}
}
/**
* 调用cmd 执行 maven 命令
* @param filePath
* @param artifactId
*/
public static void execCMD(String filePath,String artifactId) {
Runtime runtime = Runtime.getRuntime();
try {
// runtime.exec(" cmd /k dir mvn install:install-file -Dfile=D:\\idealDomeManager\\Kyber_MES\\Kyber_Core_Web_API\\libs\\kyber-client-1.0.1-SNAPSHOT.jar -DgroupId=kyber -DartifactId=kyber-client -Dversion=1.0.1.1 -Dpackaging=jar");
if ((filePath != null || !"".equals(filePath))&& (artifactId != null || !"".equals(artifactId))) {
String cmd="mvn install:install-file -Dfile=" + filePath + " -DgroupId=kyber -DartifactId=" + artifactId + " -Dversion=1.0.1.1 -Dpackaging=jar";
System.out.println("----------------------------");
System.out.println(cmd);
runtime.exec(" cmd /k "+cmd);
System.out.println("执行成功!");
} else {
System.out.println("执行失败,入参数存在空值!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 拼接maven 依赖格式
* @param groupId
* @param artifactId
* @param version
* @return
* @throws FileNotFoundException
*/
public static String getMavenDependency(String groupId,String artifactId,String version) throws FileNotFoundException {
StringBuffer bf=new StringBuffer();
bf.append("<dependency>");
bf.append("<groupId>");
bf.append(groupId);
bf.append("</groupId>");
bf.append("<artifactId>");
bf.append(artifactId);
bf.append("</artifactId>");
bf.append("<version>");
bf.append(version);
bf.append("</version>");
bf.append("</dependency>");
return bf.toString();
}
/**
* 获取文件夹下所有文件名称、路径
* @param path
* @return
*/
public static List<String> getFiles(String path) {
ArrayList<String> es = new ArrayList<>();
File file = new File(path);
// 如果这个路径是文件夹
if (file.isDirectory()) {
// 获取路径下的所有文件
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
// 如果还是文件夹 递归获取里面的文件 文件夹
if (files[i].isDirectory()) {
System.out.println("目录:" + files[i].getPath());
getFiles(files[i].getPath());
} else {
es.add(files[i].getPath());
//System.out.println("文件:" + files[i].getPath());
}
}
} else {
System.out.println("文件:" + file.getPath());
}
for (int j = 0; j < es.size(); j++) {
System.out.println(es.get(j));
}
System.out.println(es.size());
return es;
}
/**
* 将控制台输出重定向至.txt文件中
*/
public static void fileToTxt(String code) throws FileNotFoundException {
// 普通的控制台输出
PrintStream ps = System.out;
ps.println("before");//`在这里插入代码片`
// 将输出重定向到文件
ps = new PrintStream(new BufferedOutputStream(new FileOutputStream("print.txt")), true);
System.setOut(ps);
System.out.println(code);
// 返回到控制台输出
System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.out)), true));
System.out.println("执行完毕!");
}
public static void main(String[] args) throws FileNotFoundException {
fileToTxt("Hello!");
}
}
在这里插入代码片
2、传入jar包目录路径自动从指定目录读取jar架包,并导入Maven仓库(调用方法)
import cn.hutool.core.io.FileUtil;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import util.ToFileUtils;
public class CmdTest {
public static void main(String[] args) throws FileNotFoundException {
ToFileUtils io=new ToFileUtils();
String s1 = "", s2 = "", s3 = "",m=""; int i=0;
//路径 这里写一个路径进去
String path = "D:\\idealDomeManager\\Kyber_MES\\Kyber_Core_Web_API\\libs";
String path1="D:\\idealDomeManager\\Kyber_MES\\Kyber_Core_Web_API\\mods";
String path3="D:\\idealDomeManager\\Kyber_MES\\project_ap\\build\\libs";
String path4="D:\\idealDomeManager\\Kyber_MES\\project_ap\\libs\\lib_copy";
//调用方法
List<String> list = io.getFiles(path1);
StringBuffer bf=new StringBuffer();
// String strPath = "d:\\aaa\\bbb\\cc\\ddd.jpg";
//返回主文件名
// String suffix = FileUtil.getPrefix(new File(strPath));
//Assert.assertEquals("xmlParserAPIs", suffix);
for (String s : list) {
String fileName = FileUtil.getPrefix(new File(s));
s1=StringUtils.substringBeforeLast(fileName, "-");
/*System.out.println("s1----"+s1);
System.out.println(s);
System.out.println(s1);
System.out.println(fileName);
System.out.println("------------------------");*/
io.execCMD(s,s1); //执行mvn 命令添加jar至maven本地仓库
m =io.getMavenDependency("kyber", s1, "1.0.1.1"); //生成maven 依赖文件
bf.append(m);
//System.out.println(fileName);
}
io.fileToTxt(bf.toString());
System.out.println(list.size());
}
}
在这里插入代码片
这里说一下提醒一下,获取文件夹中jar架包文件的文件名用到的一个方法如下:
import cn.hutool.core.io.FileUtil;
//返回主文件名
// String suffix = FileUtil.getPrefix(new File(strPath));
在这里插入代码片
3、生成Maven依赖的格式文件的代码
/**
* 拼接maven 依赖格式
* @param groupId
* @param artifactId
* @param version
* @return
* @throws FileNotFoundException
*/
public static String getMavenDependency(String groupId,String artifactId,String version) throws FileNotFoundException {
StringBuffer bf=new StringBuffer();
bf.append("<dependency>");
bf.append("<groupId>");
bf.append(groupId);
bf.append("</groupId>");
bf.append("<artifactId>");
bf.append(artifactId);
bf.append("</artifactId>");
bf.append("<version>");
bf.append(version);
bf.append("</version>");
bf.append("</dependency>");
return bf.toString();
}
在这里插入代码片
4、生成Maven依赖文件已txt保存到本地的代码
* 将控制台输出重定向至.txt文件中
*/
public static void fileToTxt(String code) throws FileNotFoundException {
// 普通的控制台输出
PrintStream ps = System.out;
ps.println("before");//`在这里插入代码片`
// 将输出重定向到文件
ps = new PrintStream(new BufferedOutputStream(new FileOutputStream("print.txt")), true);
System.setOut(ps);
System.out.println(code);
// 返回到控制台输出
System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.out)), true));
System.out.println("执行完毕!");
}
在这里插入代码片
这里本人亲测有效,不足之处,请见谅,意见建议及学习交流请联系: