一个极其简易的 cli 工具,批量清理指定目录及其子目录的构建产物,目前支持 go,maven,gradle,cargo 的构建产物清除
安装
cargo install rs_clean
使用
$ rs_clean folder/
1
idealhs 104 天前 2
你是否在寻找 git clean -fdx
|
3
AoEiuV020JP 104 天前
比起清理,我更在意怎么把构建缓存集中到一个目录里,
我常用的 gradle 调整配置可以把 build 集中起来放在根目录方便删除, 但还剩个 buildSrc/.gradle 不知道咋改, 话说你这工具对我这种修改过 build 目录的情况应该就不适用了吧, |
4
coderpwh OP @AoEiuV020JP 我的工具本质就是在目录下面运行 gradle clean
|
5
AoEiuV020JP 104 天前
@coderpwh #4 那这清不干净,重要的 local.properties 和碍眼的.gradle 都没清理掉,build 目录自身也不会删除,
这样的话这个工具用途就比较局限了, 比如暂时不用的项目用这工具清理一下释放空间, 想不到其他使用场景了, 我以为至少要能用来把项目清干净然后发送给别人使用,这个就要求清理不会有本机信息剩下, |
6
AoEiuV020JP 104 天前
@coderpwh #4 而且还有个坑,gradle 一般开启了 daemon , 你这工具启动 gradle 有没有禁用 daemon, 或者事后有没有把 gradle stop 掉,
没有的话 java 会残留在内存里占一大块,如果有多个新旧项目使用不同版本 gradle 还会有多个 java 驻留内存, 这些细节坑要一个构建工具优化感觉想想就很麻烦, 优化不好的注定只能是“自用小工具”,别人很难用上, |
7
PTLin 104 天前
以前因为 cargo 构建项目太大也写了一个简单的,后来想改成多线程支持不同项目的,写一写就放弃了,没想到 op 做到了
```rust fn walk(p: impl AsRef<Path>) -> anyhow::Result<()> { let save = std::env::current_dir()?; std::env::set_current_dir(&p)?; for entry in std::fs::read_dir(".")? { let entry = entry?; let path = entry.path(); let file_name = path.file_name().unwrap().to_str().unwrap(); if file_name.contains("Cargo.toml") { println!("{}", p.as_ref().display()); std::process::Command::new("cargo.exe") .arg("clean") .spawn() .unwrap(); break; } if path.is_dir() { walk(&path)?; } } std::env::set_current_dir(save)?; Ok(()) } ``` |
8
yb2313 100 天前
|