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(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具