5 个版本
0.2.3 | 2022年1月3日 |
---|---|
0.2.2 | 2021年10月21日 |
0.2.1 | 2021年10月21日 |
0.2.0 | 2021年8月10日 |
0.1.0 | 2021年8月3日 |
#2084 在 命令行工具
1MB
2K SLoC
[](https://github. com/hpehl/mcup/actions)
Maven 清理
mcup
/m'kʌp/ (maven clean up) 是一个命令行工具,用于保持您的本地 Maven 仓库小 📦 和整洁 🧹。
Maven 是一个构建 Java 以及其他在 JVM 上运行的编程语言的优秀工具。Maven 的核心是一个依赖管理器,它将依赖项下载并存储在本地仓库中。随着时间的推移,这个仓库会越来越大,并占用更多的硬盘空间。它通常包含过时的版本或不必要的依赖项。
mcup
帮助您清理本地仓库。它使用过滤器根据 Maven 坐标 groupId
、artifactId
和 version
来选择工件。它知道三种模式
- 分析和报告过滤器选择的工件的大小
- 删除过滤器选择的全部工件,保留其余的
- 保留过滤器选择的全部工件,删除其余的
安装
对各种包管理器的支持是 正在进行中。
预编译的二进制文件 可用于 Windows、macOS 和 Linux。
Shell 自动补全
发布版二进制文件包含适用于 bash、fish、zsh、elvish 和 Powershell 的手册页和自动补全文件。要安装它们
- 对于 bash,将
completions/mcup.bash
移动到$XDG_CONFIG_HOME/bash_completion
或/etc/bash_completion.d/
。 - 对于 fish,将
completions/mcup.fish
移动到~/.config/fish/completions/
。 - 对于 zsh,将
completions/_mcup
移动到您的$fpath
目录之一。 - 对于Elvish,使用epm安装
completions/mcup.elv
- 对于PowerShell,将
completions/_mcup.ps1
添加到您的PowerShell配置文件中。
Cargo
如果您是Rust程序员,也可以使用cargo
安装mcup。
$ cargo install mcup
用法
mcup [FLAGS] [OPTIONS] <SUBCOMMAND>
标志
-
-r, --releases
仅选择已发布的工件 -
-s, --snapshots
仅选择快照工件 -
-h, --help
打印帮助信息 -
-V, --version
打印版本信息
选项
-
-g, --groups <GROUPS>
根据组ID选择工件。默认包括子组。
组 选择 org 以'org'开头(包括'org')的所有组 org.wildfly 以'org.wildfly'开头(包括'org.wildfly')的所有组 org.wildfly.core 以'org.wildfly.core'开头(包括'org.wildfly.core')的所有组 -
-a, --artifacts <ARTIFACTS>
根据工件ID选择工件。支持类似于
maven-*-plugin
的globbing(有关更多详细信息,请参阅https://docs.rs/glob/0.3.0/glob/)。工件 选择 wildfly-core 仅选择'wildfly-core'工件 *wildfly* 包含'wildfly'的所有工件 -
-v, --versions <VERSIONS>
根据版本(范围)选择工件。使用
<n>..
选择最新的n个版本,..<n>
选择最旧的n个版本,以及使用<version>
仅选择一个特定的版本。版本 选择 1.. 最新版本 5.. 最新的5个版本 ..1 最旧的版本 ..4 最旧的4个版本 1.2.3 版本1.2.3 -
-l, --local-repository <LOCAL_REPOSITORY>
设置本地Maven仓库的位置。mcup
根据https://maven.apache.org/guides/mini/guide-configuring-maven.html#configuring-your-local-repository尊重本地仓库的配置。本地仓库的位置按照以下顺序计算
--local-repository
选项的值~/.m2/settings.xml
中的<localRepository/>
的值- 回退到
~/.m2/repository/
子命令
磁盘使用情况(《du》命令)
使用此子命令来分析由过滤器选择的工件磁盘使用情况。该子命令接受与《keep》和《rm》子命令相同的过滤器,但不会删除任何工件。相反,它选择与过滤器匹配的工件,并计算组、工件和版本的尺寸。
该子命令接受以下选项
-o, --output <OUTPUT>
定义是否将(g)组、(a)工件和(v)版本包含在使用摘要中。默认为ga
。
有关更多信息和支持示例,请参阅DU 页面。
保留/删除(《keep》命令,rm
)
使用这些子命令之一来删除过滤器选择的工件
keep
保留与过滤器匹配的工件并删除其他所有工件rm
删除与过滤器匹配的工件并保留其他所有工件
这些子命令接受以下标志
-
-d, --dry-run
不删除工件 -
--list
打印将要删除的工件的完整路径。将此标志与
--dry-run
一起使用,以审查或后处理将要删除的工件mcup --versions '3..' keep --dry-run --list > artifacts.txt
过滤器组合
对于 keep
和 rm
子命令,至少需要一个 --releases
、--snapshots
、--groups
、--artifacts
或 --versions
,其中 --releases
和 --snapshots
是互斥的。
子命令 du
与 rm
有相同的语义,但不需要过滤器。
如果指定了 --groups
和任何其他过滤器,则只有匹配的(子)组下的工件会受到子命令(du
、keep
或 rm
)的影响。匹配的(子)组之外的工件不会受到影响。
以下表格解释了不同的过滤器组合,并描述了哪些工件被分析、保留或删除。
过滤器 | du | keep | rm |
---|---|---|---|
--groups 仅 |
分析指定的(子)组。 | 保留指定的(子)组并删除其他所有内容。 | 删除指定的(子)组。 |
--artifacts 仅 |
分析指定的工件。 | 保留指定的工件并删除其他所有内容。 | 删除指定的工件。 |
--versions 仅 |
分析指定的版本。 | 保留指定的版本并删除其他所有内容。 | 删除指定的版本。 |
--groups 加任何其他过滤器 |
分析匹配的过滤器下的工件。 | 保留匹配的过滤器下的工件并删除其他所有内容。 | 删除匹配的过滤器下的工件并保留其他所有内容。 |
所有其他组合(无 --groups ) |
分析匹配的过滤器。 | 保留匹配的过滤器并删除其他所有内容。 | 删除匹配的过滤器。 |
示例
快速了解哪些组占用的空间最大
mcup du -og
显示所有以'-build'结尾的工件的使用情况。在使用摘要中包括组、工件和版本。
mcup --artifacts '*-build' du -ogav
保留最近的三个版本
mcup --versions '3..' keep
删除最旧的三个版本
mcup --versions '..3' rm
保留最新的发布版本(不修改快照)
mcup --releases --version '1..' keep
删除所有快照
mcup --snapshots rm
删除所有以组ID 'edu'开头的工件
mcup --groups edu rm
保留最新的Maven插件。不要删除'org.apache.maven.plugins'组之外的任何内容
mcup --groups 'org.apache.maven.plugins' --versions '1..' keep
删除所有以'junit'开头的工件(跨所有组)
mcup --artifacts 'junit*' rm
依赖项
~6–16MB
~169K SLoC