cleanInvalidMavenPkg.ps1
#[CmdletBinding()]
#Param(
# [string]$reposDir
#)
#
if($args.Length -eq 0)
{
Write-Host "maven本地仓库目录未指定"
exit;
}
$reposDir=[string]$args[0]
if([string]::IsNullOrWhiteSpace($reposDir))
{
Write-Host "maven本地仓库目录未指定"
exit;
}
if(!(Test-Path $reposDir))
{
Write-Host "目录$($reposDir)不存在"
exit;
}
if(-not $reposDir.EndsWith("/") -and -not $reposDir.EndsWith("\"))
{
$reposDir = $reposDir + "\"
}
#下载日期
$minDate = New-Object System.DateTime([System.DateTime]::Now.Year,[System.DateTime]::Now.Month,[System.DateTime]::Now.Day)
# 小于2kb
$minSize = 2 -shl 10
function checkDir
{
Param(
[System.IO.DirectoryInfo]$dir
)
$flag = $false
foreach($jarFile in Get-ChildItem -File -Path $dir.FullName -Filter *.jar)
{
#Write-Host ("{0}时间{1}大小:{2}" -f $jarFile.FullName.Replace($reposDir,""),$jarFile.LastWriteTime,$jarFile.Length)
if($jarFile.LastWriteTime -gt $minDate -and $jarFile.Length -lt $minSize)
{
#Write-Host ("{0}时间{1}大小:{2}" -f $jarFile.FullName.Replace($reposDir,""),$jarFile.LastWriteTime,$jarFile.Length)
$flag=$true
break
}
}
if($flag)
{
Write-Host $dir.FullName.Replace($reposDir,"")
$dir.Delete($true)
}
}
Get-ChildItem -Directory -Path $reposDir -Recurse | ForEach-Object {
checkDir $_
}
处理原理是根据jar保存时间和大小判断包无效的;然后删除jar文件目录(包对应版本目录),项目中reimport即可。
powershell中2 -shl 10等价于 2<<10=2048 2kb
已测试脚本可行;
运行:
1.设置运行级别
set-executionpolicy RemoteSigned -Scope CurrentUser
2.进入命令行,输入powershell,进入交互模式
输入./cleanInvalidMavenPkg.ps1 "E:\repository"
我本地配置的maven仓库地址是"E:\repository"