Maven本地缓存清理小工具的实现

有个时候多人多team协作开发过程中,会存在临时修改的二方包,同样版本需要重新拉取的情况。发现大部分人包括自己长久以来也是采用最原始的方法,一层层找到对应的目录删除对应的文件。某天实在是受不了了,写了个小工具分享下,小代码解决小问题。

外部依赖:fastjson,commons-io,commons-lang3,不要嘲笑,有工具干嘛不用呢,非得造轮子吗。

import com.alibaba.fastjson.JSON;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;

/**
 * @author tjw
 */
public class MavenLocalRepoCleaner {

  /**
   * coordinateJson
   * {
   *   "groupId1":"artifactId1:version1,artifactId2:version2...",
   *   "groupId2":"artifactId:version,..."
   * }
   */
  public static void main(String[] args) {
    String coordinateJson="{"
      + "\"top.xbynet.xxx\":\"\""
      + "}";
    Map<String,String> coordinateMap=JSON.parseObject(coordinateJson,HashMap.class);
    Path m2Repo= Paths.get(System.getProperty("user.home"),".m2","repository");
    coordinateMap.entrySet().stream().forEach(v->{
      String groupId=v.getKey();
      groupId = groupId.replace('.', File.separatorChar);
      if(StringUtils.isBlank(v.getValue())){
        Path dir = Paths.get(m2Repo.toString(), groupId);
        try {
          FileUtils.deleteDirectory(dir.toFile());
        } catch (IOException e) {
          e.printStackTrace();
        }
      }else {
        String[] artfactIdVers = v.getValue().split(",");

        for (String str : artfactIdVers) {
          String ver = "";
          if (str.contains(":")) {
            ver = str.split(":")[1];
          }
          String artfactId = str.split(":")[0];
          Path dir = Paths.get(m2Repo.toString(), groupId, artfactId, ver);
          try {
            FileUtils.deleteDirectory(dir.toFile());
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
      }
    });

  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Maven本地缓存清理小工具的实现

    有个时候多人多team协作开发过程中,会存在临时修改的二方包,同样版本需要重新拉取的情况.发现大部分人包括自己长久以来也是采用最原始的方法,一层层找到对应的目录删除对应的文件.某天实在是受不了了,写了个小工具分享下,小代码解决小问题. 外部依赖:fastjson,commons-io,commons-lang3,不要嘲笑,有工具干嘛不用呢,非得造轮子吗. import com.alibaba.fastjson.JSON; import org.apache.commons.io.FileUtil

  • java如何使用自己的maven本地仓库详解

    本地仓库 主要是一种缓存,当你使用远程仓库中下载组件后,它下一次会优先从本地进行加载,一般位于USER_HOME/.m2目录下,我们自己也可以建立公用的包,把包发布到本地仓库,自己在其它项目里直接可以用,当然如果希望在任务地方都使用自己的包,需要把它发布到远程仓库中. 像nuget,npm一样maven也是仓库 Jar的maven配置 <dependency> <groupId>javalindday</groupId> <artifactId>jpaDem

  • 小程序清理本地缓存的方法

    1.wx.clearStorage接口函数,这个函数不需要参数,可以清理本地的所有缓存. 清除前: 清除后: 2.wx.clearStorageSync接口函数,这个函数用于同步清理本地数据缓存,该接口同样也没有参数. 清除前: 清除后: 3.wx.removeStorage接口函数:这个接口函数用于从本地缓存中异步删除指定key对应内容 清除前: 清除后: 4.wx.removeStorageSync接口函数:这个函数用于从本地缓存中同步删除指定key对应的内容 清除前: 清除后: 以上就是本

  • Java本地缓存工具之LoadingCache的使用详解

    目录 前言 环境依赖 代码 演示一下 总结 前言 在工作总常常需要用到缓存,而redis往往是首选,但是短期的数据缓存一般我们还是会用到本地缓存.本文提供一个我在工作中用到的缓存工具,该工具代码为了演示做了一些调整.如果拿去使用的话,可以考虑做成注入Bean对象,看具体需求了. 环境依赖 先添加maven依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</arti

  • 微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解

    微信小程序 缓存 关于本地缓存 1.wx.setStorage(wx.setStorageSync).wx.getStorage(wx.getStorageSync).wx.clearStorage(wx.clearStorageSync) 可以对本地缓存进行设置.获取和清理.本地缓存最大为10MB 2.localStorage 是永久存储 一.异步缓存 wx.setStorage(OBJECT) 将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容 wx.setStor

  • C#实现可缓存网页到本地的反向代理工具实例

    本文实例讲述了C#实现可缓存网页到本地的反向代理工具.分享给大家供大家参考.具体实现方法如下: proxy.ashx 主文件: <%@ WebHandler Language="C#" Class="proxy" %> using System; using System.Web; using System.Net; using System.Text; using System.IO; using System.Collections.Generic;

  • 微信小程序本地缓存数据增删改查实例详解

    微信小程序本地缓存数据增删改查实例详解 数据如: var user = { name: 'Lion', sex: 'guy' } CRUD: // 添加 wx.setStorageSync('user', user); // 查询 var developer = (wx.getStorageSync('user') || []); // 更改 developer.name = 'Lion01'; wx.setStorageSync('user', user); // 删除 wx.removeSt

  • 微信小程序基于本地缓存实现点赞功能的方法

    本文实例讲述了微信小程序基于本地缓存实现点赞功能的方法.分享给大家供大家参考,具体如下: wxml中的写法 注意: 1. 使用wx:if="{{condition}}" wx:else实现图标的切换效果: 2. 为图片绑定点击事件bindtap="toCollect",两个image标签都要绑定! <image wx:if="{{collection}}" src="/images/icon/pic1.png" bind

  • 微信小程序如何修改本地缓存key中单个数据的详解

    最近在做教师评教系统,有一个'个人信息'页面中有个编辑修改邮箱的功能,本来想得很简单,结果进坑了,搞了好久才出来. 我想实现的效果是点击下图左侧邮箱,然后进入右侧页面,进行邮箱的修改,点击提交后跳转到左侧页面,同时邮箱也发生改变. 点击'我的'时,我让它从控制台打印出student缓存中传过来的数据,如下: {no: "1635050601", name: "张三", sex: "", email: "123@qq.com",

  • 这些小工具让你的Android开发更高效

    在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效. Vysor Vysor 是一个可以将手机的屏幕投影到电脑上,当然也可以操作,当我们做分享或者演示的时候,这个工具起到了作用. Vector Asset Android Studio 在1.4 支持了VectorAsset,所谓VectorAsset:它可以帮助你在Android 项目中添加Materia

随机推荐