普通项目的Jar转Maven依赖---Java中将Jar架包从指定目录读取并自动导入Maven仓库、自动生成Maven Dependences依赖文档Dome案例

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("执行完毕!");

    }

在这里插入代码片

这里本人亲测有效,不足之处,请见谅,意见建议及学习交流请联系:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值