document.write("");

Libraries里maven依赖爆红 根据依赖查询对应依赖相关工具

某日 Libraries里maven依赖爆红,于是复制了爆红的依赖名称(不是不想重新下载依赖,是只有本地的依赖,远端的不可用,不全,可以这样理解)

项目是在离线模式下运行的,使用的都是.m2里的依赖,故

将粘贴板的内容做一下处理,获得对应的依赖的查询网址,并赋予粘贴板上

这时contrl v ,显示的值就是  https://repo1.maven.org/maven2/xxx/xxx/xxxx

然后顺便打开.m2文件夹中该依赖对应的文件夹,并且删除改文件夹内的所有 .repositories  .sha1 .lastUpdated结尾的文件

 

复制代码
import java.util.Timer;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;

/*
* 使用方式:
*   1. 在idea File --> Project Structure --> Libraries 里的爆红的依赖名称,复制
*
* */
public class Monitor {

    /**
     *1. 从剪切板获得文字。
     */
  public static String getClipboardText() throws Exception{
      Clipboard c=Toolkit.getDefaultToolkit().getSystemClipboard();
        return c.getData(DataFlavor.stringFlavor).toString();
    }
    public static void open_directory(String path) {
        java.io.File file = new java.io.File(path);
        if(!file.exists()) {
            System.out.println("没有文件夹: " + path);
            return;

        }
        try {
            Runtime.getRuntime().exec("cmd /c start explorer " + path);

        } catch (java.io.IOException ex) {

            ex.printStackTrace();
        }
    }

    public static void main(String[] args) throws Exception{
//        Timer timer = new Timer();
//        timer.schedule(new Task(), 1 * 1000);
        String name = getClipboardText();
        System.out.println(name);
        String res = parseS(name);
        StringSelection stsel = new StringSelection(res);
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stsel, stsel);


    }
    public static String parseS (String name) {
        if (name.indexOf("Maven: ") == 0) {
            name = name.replace("Maven: ","");
        }
        String res = "https://repo1.maven.org/maven2/";
        String[] names = name.split(":");
        String add = "";
        for (int i = 0; i < names.length; i++) {
            if (i == 0) {
                add += names[i].replace(".","/");
            }  else {
                add += "/" + names[i];
            }
        }
        String pathS = "D:\\XXX\\XXX\\.m2\\repository\\";
        String[] pathSinit = name.split(":");
        String open = "";
        for (int i = 0; i < names.length; i++) {
            if (i == 0) {
                open += names[i].replace(".","\\");
            }  else  if (i!=  names.length - 1){
                open += "\\" + names[i];
            } else {
                open += "\\" + names[i];
            }
        }
        deleteFile(pathS + open);
//        https://search.maven.org/remotecontent?filepath=org/apache/poi/poi/3.17/poi-3.17-javadoc.jar
        System.out.println(res + add + "/");
        open_directory(pathS + open);
        return res + add + "/";
    }
    public static void deleteFile(String path) {
        java.io.File file = new java.io.File(path);
        // 获取当前目录下的目录和文件
        java.io.File[] listFiles = file.listFiles();
        for (java.io.File f:listFiles) {
            //判断是否是目录
            if (f.isDirectory()) {
                System.out.println("是目录,不做操作");
            }else {
                //不是标准文件直接调用delete()方法删除
                if(f.getName().endsWith(".repositories") || f.getName().endsWith(".sha1") || f.getName().endsWith(".lastUpdated")){
                    System.out.println("删除" + f.getName());
                    f.delete();
                }
            }
        }
        //最后把空文件夹删除
        file.delete();
    }
}
复制代码

 

posted @   人间春风意  阅读(429)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示

距今时间:
1025天8.00 小时 52.68 分钟

当前新增阅读数:140327