关于 111-java-maven-dependencies
面向 Java Maven 项目的交互式技能,用于添加用户选定的代码质量与领域建模依赖。它会先验证项目,再询问依赖选择,并且只应用已选项。
主要功能
- 01变更前执行 Maven 验证
- 02通过问答选择依赖
- 03配置 JSpecify 与 NullAway
- 04支持 VAVR 函数式编程
- 05添加 ArchUnit 与 JavaMoney
适用场景
- 01添加空值注解和编译期检查
- 02引入函数式类型与不可变集合
- 03在测试中执行架构规则
- 04在 Java 中建模金额与货币
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jabrena/ plinth --skill 111-java-maven-dependencies安装后在 Claude Code 中输入/111-java-maven-dependencies确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/111-java-maven-dependencies-archunit.md111-java-maven-dependencies-vavr.md111-java-maven-dependencies-javamoney.md111-java-maven-dependencies-jspecify.md详细介绍
添加 Maven 依赖以提升代码质量
通过以咨询为导向、以问题引导的方式,添加必要的 Maven 依赖,以提升代码质量、安全性和领域建模能力。这是一个交互式 SKILL。
此 Skill 涵盖哪些内容?
- JSpecify:(空值注解,
provided作用域) - Error Prone + NullAway:(增强静态分析,并在编译时检查空值)
- VAVR:(使用 Try/Either 和不可变集合进行函数式编程)
- ArchUnit:(强制执行架构规则,
test作用域) - JavaMoney:(通过 JSR 354 和 Moneta 提供 Money 和 Currency API 支持)
约束
添加 Maven 依赖之前,确保项目处于有效状态。采用以咨询为导向、以问题引导的流程,只添加用户选择的依赖。
- MANDATORY:在进行任何更改之前,运行
./mvnw validate或mvn validate - SAFETY:如果验证失败,请停止并要求用户修复问题;问题解决之前不得继续
- 读取依赖参考资料之前:先运行嵌入此 SKILL.md 的提问流程。先提出一个涵盖依赖选择的综合问题,再仅针对用户所选选项提出必要的条件性后续问题。只读取用户回答所选依赖的参考资料。使用咨询式措辞,说明权衡,并等待用户回复后再实施
何时使用此 Skill
- 添加 Maven 依赖
- 添加 JSpecify 空值依赖
- 添加 Error Prone NullAway 依赖
- 添加 VAVR 函数式依赖
- 添加 ArchUnit 架构测试依赖
- 添加 JavaMoney 依赖
工作流
- 在更改前验证项目
运行 ./mvnw validate 或 mvn validate;如果验证失败,则停止。
- 读取参考资料前询问依赖评估问题
在读取任何依赖实现参考资料前,先按此 XML 中包含的问题流程提问。首先提出整合后的依赖选择问题,等待用户回答,并记录所选依赖系列后再继续。仅在所选依赖需要时提出条件式后续问题。
问题 1:你想添加哪些代码质量依赖?
选项:
- JSpecify(现代空值注解,
provided作用域;推荐新项目使用) - Error Prone + NullAway(增强编译器分析和编译时空值检查;需要 JSpecify)
- VAVR(函数式编程支持,提供 Try/Either 和不可变集合)
- ArchUnit(使用 JUnit 5 进行架构测试,
test作用域) - JavaMoney(通过 JSR 354 和 Moneta 提供 Money 和 Currency API 支持)
- 无
- 其他(请说明)
建议:选择 JSpecify 以获得更好的空值安全注解。需要更强的编译时分析时,可添加 Error Prone + NullAway。仅在项目需要函数式编程模式时添加 VAVR。需要自动化架构治理时添加 ArchUnit。当领域需要明确的货币金额、货币种类、格式化、换算或精度安全的货币计算时,添加 JavaMoney。
选择说明:
- 如果选择 Error Prone + NullAway,也要选择 JSpecify,除非项目已配置等效的空值注解。
- 如果选择“无”,则不要添加依赖系列参考资料。
问题 2(条件式):你的项目主包名是什么?
注意:仅在选择了 Error Prone + NullAway 时才会询问此问题。
配置 NullAway 以分析你的代码需要此信息。例如,如果你的类位于 com.example.myproject 中,请输入 com.example.myproject。
格式:使用点号表示法(例如 com.example.myproject 或 org.mycompany.myapp)
示例:com.example.myproject
回答所有适用问题后,确认所选项并将其映射到参考资料:
- 如果选择了 JSpecify,请阅读
references/111-java-maven-dependencies-jspecify.md。 - 如果选择了增强编译器分析,请使用
references/111-java-maven-dependencies-jspecify.md中的 Error Prone + NullAway 部分。 - 如果选择了 VAVR,请阅读
references/111-java-maven-dependencies-vavr.md。 - 如果选择了 ArchUnit,请阅读
references/111-java-maven-dependencies-archunit.md。 - 如果选择了 JavaMoney,请阅读
references/111-java-maven-dependencies-javamoney.md。 - 不要读取或应用未选择的依赖系列参考资料。
- 阅读所选参考资料并仅添加所选依赖
仅阅读所选依赖系列的参考资料,然后仅实现用户所选的依赖、属性、作用域、插件配置和支持文件,同时保留现有的 pom.xml 结构。
- 说明权衡并进行后续检查
总结添加了哪些内容、添加原因,以及建议进行的后续验证或工具链对齐工作。
参考资料
详细指南、示例和约束请参阅: