一、为什么要在 Windows 上做"绿色版"开发工具链
每台新机器、每个新客户现场、每个虚拟机都要重新装一遍开发环境,是 Windows 程序员最痛苦的事之一。理想状态是:一个 D:\portable\ 目录,拷过去就能干活。
本文把开发时最常用的小工具(不包含 IDE 与 Docker)整理成一份"解压即用"配置手册:
- C/C++ 编译:CMake + MinGW
- JVM 构建:Maven + Gradle
- Node 多版本:nvm-windows
- 多媒体处理:ffmpeg
- 嵌入式数据库:sqlite3
- IDL 编译:protoc
- 搜索引擎:Elasticsearch(本地开发用)
二、C/C++ 工具链:CMake + MinGW
2.1 MinGW-w64 下载与配置
推荐 niXman/mingw-builds-binaries,选 x86_64-13.x.x-release-posix-seh-ucrt-rt_v11-rev0.7z(ucrt 是 Win10/11 推荐运行时)。
或者从 winlibs.com 下整合好的 zip。
解压到 D:\portable\dev\mingw64,加到 PATH:
| |
验证:
| |
2.2 CMake 下载与配置
cmake.org/download 下载 cmake-3.x.x-windows-x86_64.zip,解压到 D:\portable\dev\cmake-3.28.3-windows-x86_64\bin 加 PATH。
| |
避坑:下载页有两个版本
*-windows-x86_64.msi(安装器)和*-windows-x86_64.zip(绿色版),选 zip 才能 portable。
2.3 完整编译一个 hello.cpp
| |
2.4 用 CMake 跨平台构建
| |
-static-libgcc -static-libstdc++关键!不写这两个就依赖libgcc_s_seh-1.dll等动态库,绿色拷贝出去会缺 DLL。
2.5 32 位与 64 位交叉编译
| |
三、JVM 构建:Maven 与 Gradle
3.1 Maven 3.9
maven.apache.org 下载 apache-maven-3.9.4-bin.zip,解压到 D:\portable\dev\apache-maven-3.9.4。
环境变量:
| |
注:
%MAVEN_HOME%这种写法在 PowerShell 里要用$env:MAVEN_HOME,cmd 才是%...%。
%MAVEN_HOME%\conf\settings.xml 必改项:
| |
3.2 Maven 找不到插件 spring-boot-maven-plugin 的坑
pom.xml 里只声明 <plugin> 不带 <version>,会报:
| |
原因:<pluginManagement> 里引用时未指定版本,或继承的 spring-boot-starter-parent 缺失。修法:
| |
3.3 Gradle 8.x
gradle.org/releases 下 gradle-8.5-bin.zip,解压到 D:\portable\dev\gradle-8.5。
| |
3.4 引入本地第三方 jar(Maven 实战)
业务 jar 不在公共仓库时,不能用 mvn install,得在 common 模块的 pom.xml 里加 scope=system:
| |
文件布局:
| |
这种方式是反模式(jar 进 git),Maven 官方不推荐;正路是搭 Nexus / 阿里云 Maven 仓库。实在没私有仓库时,临时用。
四、Node 多版本:nvm-windows
4.1 下载
coreybutler/nvm-windows/releases 下载 nvm-noinstall.zip,解压到 D:\portable\dev\nvm。
settings.txt 配置镜像(阿里云):
| |
4.2 常用命令
| |
五、ffmpeg:音视频处理
5.1 下载
ffmpeg.org 找 gyan.dev 或 BtbN 提供的构建包,下载 ffmpeg-release-essentials.zip,解压到 D:\portable\dev\ffmpeg,把 bin 加 PATH:
| |
5.2 YouTube 1080p Adaptive 音视频合并
YouTube-DL 抓下来的 1080p 视频是音视频分离的(一个 .mp4、一个 .webm),合成:
| |
-strict -2:启用实验性 AAC 编码(合成 1080p 必须);-acodec copy/-vcodec copy:流复制,秒级完成。
5.3 截图、剪切、转码
| |
六、sqlite3:嵌入式数据库
6.1 下载
sqlite.org/download.html 拉两个 zip:
sqlite-dll-win64-x64-3410200.zip:sqlite3.dllsqlite-tools-win32-x86-3410200.zip:命令行工具
解压到 D:\portable\dev\sqlite3,把 sqlite3.exe 加 PATH。
6.2 基础使用
| |
6.3 用 Navicat / IDEA 连接
sqlite3 本身支持 TCP 监听,但用 Navicat / IDEA 直连 .db 文件更直接:
| |
实战经验:很多"配置文件中心"工具(如 H2、HSQLDB、Apache Geode)底层都支持 sqlite 协议;本地开发、单元测试时 sqlite 比 MySQL 快 10 倍。
七、protoc:protobuf 编译
7.1 下载
protocolbuffers/protobuf/releases 下载 protoc-21.3-win64.zip(21.x 是 proto3 稳定版),解压到 D:\portable\dev\protoc-21.3\bin,加 PATH。
7.2 编译 .proto
| |
-I(或--proto_path):proto 文件搜索目录--xxx_out:目标语言输出目录
7.3 gRPC 代码生成
protoc 默认不生成 gRPC 服务端 / 客户端 stub,需要装 plugin:
| |
详见 grpc/grpc-java / grpc/grpc-go 文档。
八、Elasticsearch:本地开发用
8.1 下载
elastic.co/downloads/past-releases 选 7.17.x 或 8.x 的 Windows zip(不推荐用 msi)。
| |
8.2 配置文件
config/elasticsearch.yml 关键项:
| |
8.3 启动
| |
8.4 Head 插件
elasticsearch-head 是个 Chrome 插件 + 老式 Node 项目,可视化查看 index:
| |
8.x 之后 Kibana 自带 Dev Tools Console,更现代,建议用 Kibana。
九、必备小工具
| 工具 | 用途 | 绿色版路径 |
|---|---|---|
| HeidiSQL | MySQL/MariaDB 客户端 | D:\portable\dev\heidisql |
| RedisDesktopManager | Redis GUI | D:\portable\dev\rdm |
| Caddy | HTTP 服务器 | D:\portable\dev\caddy |
| 7-Zip | 解压 | 系统自带 / scoop 装 |
| ripgrep | 文件搜索 | D:\portable\dev\rg\rg.exe |
十、便携版目录约定
| |
十一、常见坑
| 现象 | 原因 | 对策 |
|---|---|---|
| g++ 链接缺 dll | 默认动态链接 | 加 -static-libgcc -static-libstdc++ |
| Maven 下载 jar 卡死 | 仓库无代理 | 配 Nexus / 阿里云镜像 |
| Gradle 启动报 JAVA_HOME 错 | JDK 路径含空格 | 重装 JDK 到无空格目录如 C:\java\jdk-17 |
| ffmpeg 合成提示 “Experimental” | AAC 编码 | 加 -strict -2 |
| sqlite3 中文乱码 | 命令行编码 | chcp 65001 切 UTF-8 |
| protoc 找不到 .proto | -I 路径错 | 绝对路径或 cd 到 .proto 所在目录 |
| Elasticsearch 启动 OOM | JVM 堆太小 | config/jvm.options 加 -Xms2g -Xmx2g |
十二、下一步
- C/C++ 进阶:CMake + vcpkg / Conan 跨平台包管理
- Maven 进阶:maven-shade-plugin 打 fat jar、maven-assembly-plugin 自定义打包
- Node 进阶:pnpm / yarn / corepack 多包管理器
- Elasticsearch 进阶:用 Docker 部署集群(参考 2019-06-20《Docker 进阶与运维》)
