Apache Rat 0.18 介绍与选型指南
介绍 Apache Rat 0.18(Apache Creadur 项目的许可证审计工具,2026-03-11 发布):启发式许可证审计定位、核心引擎与 CLI/Ant/Maven 三种使用形态、0.18 的 Java 17 基线与 UTF-8/XHTML5 报告变更、官方下载与快速上手路径、适用限制,以及与 ScanCode Toolkit/FOSSA/license-checker 的量化选型对比。全部版本与社区数据于 2026-10-19 联网实查。
Apache Rat 0.18 介绍与选型指南
目标:基于官方发布信息讲清 Apache Rat(Apache Creadur 项目的许可证审计工具)的定位、架构、特性与适用边界,并给出与同类许可证合规工具的量化选型对比。本文为认知篇,全部论断基于 Creadur 官方站点、GitHub Releases 联网溯源(查询日期 2026-10-19),不做本地安装实测。
一、信息基准
- 查询日期:2026-10-19(本文所有版本号、发布日期与社区数据均在该日联网核验)。
- 基准版本:0.18,即官方当前最新稳定版。依据:GitHub Releases Atom 流最新条目为 0.18(发布条目更新时间 2026-03-11,来源:https://github.com/apache/creadur-rat/releases.atom );官方下载页 https://creadur.apache.org/rat/download_rat.cgi 提供 apache-rat-0.18 系列发行物。
- 维护方:Apache Creadur 项目(ASF TLP,官方自述为"语言与构建无关的软件发行物理解与审计工具之家",旗下含 Rat 与 Whisker)。
- 许可:Apache License 2.0(ASF 项目标准许可)。
- 发行形态:独立 CLI jar(
java -jar直接运行)、Apache Maven 插件、Apache Ant 任务、可供工具集成的库(POM);源码与二进制发行物经 PGP/SHA512 签名校验(KEYS:https://downloads.apache.org/creadur/KEYS )。 - 官方来源清单:https://creadur.apache.org/rat/ ;https://github.com/apache/creadur-rat ;https://issues.apache.org/jira/browse/RAT/ 。
二、软件概述
2.1 项目定位与版本
Apache Rat(基准版本 0.18,2026-03-11 发布)是一款发布审计工具(release audit tool),用于检查源码树/发行物中的许可证声明、版权标注与许可证类别合规性。官方在发布说明中明确定位其方法论:Rat 是启发式的(heuristic),会对可能的问题做猜测,既会产生误报,也无法发现所有问题,报告需要人来解读。它最初诞生于 Apache Incubator 的发行物 IP 审查实践(RAT 即 Release Audit Tool),后被广泛用于各开源项目在发版流程中自查许可证头。
2.2 版本节奏(实查)
GitHub tags/releases 记录的近代版本序列:0.13(2018-10-13)→ 0.14(2022-05-28)→ 0.15(2022-08-31)→ 0.16(2023-12-28)→ 0.16.1(2024-01-24)→ 0.17(2025-10-17)→ 0.18(2026-03-11)。2022 年后进入约数月到一年一个 minor 的持续维护节奏,0.17 与 0.18 间隔约 5 个月(来源:https://github.com/apache/creadur-rat/tags.atom ,查询日期 2026-10-19)。
2.3 0.18 版本要点(据官方发布说明)
- 修复 0.17 中出现的严重性能问题:将 Tika 字符集探测采样从 12,000 字节降到 256 字节,显著提升扫描 I/O 性能;
- 构建语言级别提升到 Java 17(官方同时建议至少 JDK 21 构建,因 RAT-497 记录的 Javadoc 问题);默认字符集改为 UTF-8;
- 报告输出改为 XHTML5,Maven 插件降噪;PDF 文件按二进制处理;新增 Gradle 项目标准排除集;
- 升级 Apache Tika 至 3.2.3(处理 CVE-2025-66516)等一批依赖安全更新。
三、核心架构
3.1 引擎与 UI 分层
Rat 的结构是"一个审计引擎 + 多种调用形态":
- 核心引擎:目录/归档遍历(可深入扫描 jar 等归档内的嵌套文件)、文档类型判定(基于 Apache Tika 的 MIME/文本-二进制识别)、许可证匹配器(默认许可证族 + 自定义许可证定义、Copyright 匹配器)、统计与报告生成(计数器、XSD 校验的 XML 报告、多种输出样式)。
- 三种 UI 形态:CLI(
java -jar apache-rat-0.18.jar)、Maven 插件(绑定构建流程)、Ant 任务;0.17 起官方对三种 UI 的参数与配置做了统一化(harmonization),0.18 延续。核心也可作为库被质量工具集成(官方注明 0.x 之间不保证二进制兼容)。
3.2 排除与报告体系
- 排除体系:内置 Eclipse/IDE、Maven、Gradle 等标准排除集合,支持 .gitignore 解析、全局 gitignore、按路径/大小(
--input-exclude-size)排除; - 报告样式:
plain-rat(默认)、missing-headers(缺许可证头文件清单)、unapproved-licenses(未批准许可证清单),CLI 经--output-style切换;报告含 AL(已批准许可证)、???(未知许可证)等分类计数与文件明细; - 门禁能力:支持为计数器配置最小/最大阈值(如允许的未批准许可证数量上限),配合退出码实现 CI 门禁。
四、关键特性
以下特性依据官方站点与 0.17/0.18 发布说明归纳(查询日期 2026-10-19):
- 启发式审计:自动识别文本/二进制(Tika 驱动),对源码头、LICENSE/NOTICE 声明做许可证匹配,输出按许可证族聚合的统计报告;
- 默认拒收 GPL 族:默认将 GPL 许可族标记为不批准(与 ASF 发版政策一致),copyleft 需显式开启才纳入批准;
- 三种使用形态统一配置:同一套参数语义覆盖 CLI/Maven/Ant;
- 归档深扫:可对 jar/zip 等归档文件解包审计嵌套内容的许可证头;
- XML/XSD 报告:机器可读报告带 XSD,便于脚本预处理(0.17 起计数器可配置);
- 现代基线:Java 17 语言级别、UTF-8 默认编码、XHTML5 报告。
五、快速上手
以下为官方下载页与发布说明给出的获取与运行路径(转述,未做本地实测;来源:https://creadur.apache.org/rat/download_rat.cgi 与 0.18 发布说明,查询日期 2026-10-19):
- 下载:从官方下载页取
apache-rat-0.18-bin.tar.gz(或 zip),并用同目录.sha512/.asc与 KEYS 文件校验; - 运行 CLI:解压后以 Java 17+ 运行
java -jar apache-rat-0.18.jar <目录或归档>;无参数运行不再抛异常,官方引导使用--help查看参数; - Maven 集成:在
pom.xml中配置org.apache.rat:apache-rat-plugin并绑定rat:check目标,构建期生成报告并按阈值判定; - 报告解读:优先看
???(未知许可证)与未批准许可证计数,逐文件核对许可证头,按需用--output-style missing-headers定位缺失清单。
💡 提示:0.18 要求 Java 17 语言级别;从 0.16 及更早版本升级的用户应阅读官方迁移指南(https://creadur.apache.org/rat/apache-rat/migration-guide.html ),0.17 对参数与报告结构有较大调整。
六、适用场景与限制
适用场景:
- ASF 项目及一般开源项目发版前的许可证头/版权标注自查,直接对接 Apache 发版惯例;
- CI 门禁:以退出码与计数阈值拦截未声明许可证的新增文件;
- 对发行物(含嵌套 jar 归档)做快速许可证头普查。
限制与注意:
- 启发式而非法律结论:官方明确会产生误报且无法穷尽问题,报告必须人工解读,不能替代专业许可证合规审计;
- 只看声明、不识别代码来源:它检查"文本上是否有许可证声明",不做依赖图分析,也不维护许可证数据库(这与 ScanCode/FOSSA 的定位差异,见第七章);
- 0.x 二进制不兼容:作为库集成时,官方不保证 0.x 版本间二进制兼容;
- Java 17 基线:运行/构建环境需满足新 JDK 要求,老环境需停在 0.16.x。
七、同类选型对比
| 工具 | 许可 | GitHub Stars | 贡献者 | 最近发版 | 版本节奏 | 兼容矩阵要点 |
|---|---|---|---|---|---|---|
| Apache Rat 0.18 | Apache-2.0 | 41 | 39 | 0.18(2026-03-11) | 2022 后数月至一年一个 minor | Java 17+;CLI/Maven/Ant;面向源码树与归档的声明审计 |
| ScanCode Toolkit v32.5.0 | Apache-2.0 | 2.6k | 350 | v32.5.0 稳定(另有 v32.6.0rc8、v33.0.0rc1 预发布) | 持续发版,库组件(commoncode 等)滚动更快 | Python 3.x CLI + JSON/SPDX 输出;内置许可证/版权检测数据库,可识别文件级许可证与版权行 |
| FOSSA(fossa-cli v3.20.4) | 商业平台 + 开源 CLI | 1.5k | — | v3.20.4(2026-10-16) | 高频 | 多语言依赖图扫描 + 组织级合规策略;CLI 上报、平台分析 |
| license-checker 25.0.1 | BSD-3-Clause | — | — | 25.0.1(npm 最后发布约 2022-06) | 已停滞 | Node.js 生态;遍历 node_modules 产出许可证 JSON 汇总 |
数据来源:GitHub Releases/Tags Atom 流(https://github.com/aboutcode-org/scancode-toolkit/releases.atom 、https://github.com/fossas/fossa-cli/releases.atom )、npm registry(https://registry.npmjs.org/license-checker )、各项目官网与仓库页面,星标/贡献者数取自 shields.io GitHub badges,查询日期 2026-10-19。
选型建议:目标是"发版前自查许可证头、贴合 Apache 发版流程、零依赖轻量集成",选 Apache Rat;需要识别文件级许可证与版权、输出 SPDX/SBOM 风格清单、覆盖大量许可证数据库条目,选 ScanCode Toolkit;需要组织级依赖图合规策略、审批流与持续监控(可接受商业采购),选 FOSSA;只是 Node 项目想快速列出依赖许可证且不在乎维护停滞,可用 license-checker。三者在"源码头审计 / 深度许可证识别 / 组织合规平台"三个层次上并不互斥,成熟团队常见 Rat(发版门禁)+ ScanCode/FOSSA(合规分析)组合。
八、参考链接
- Apache Creadur Rat 官方站点:https://creadur.apache.org/rat/
- 官方下载页:https://creadur.apache.org/rat/download_rat.cgi
- GitHub 仓库:https://github.com/apache/creadur-rat (Releases Atom:https://github.com/apache/creadur-rat/releases.atom )
- 迁移指南:https://creadur.apache.org/rat/apache-rat/migration-guide.html
- 历史变更:https://creadur.apache.org/rat/changes.html
- ScanCode Toolkit:https://github.com/aboutcode-org/scancode-toolkit
- FOSSA:https://fossa.com/ (CLI 仓库 https://github.com/fossas/fossa-cli )
- license-checker(npm):https://www.npmjs.com/package/license-checker