Skip to content

simonking-ws/java-skills

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

name description
java-pkg-gen
Java包路径生成工具。根据基础包和项目名生成规范的Java包结构,支持自动获取当前目录名、包名去重、关键字冲突处理、单复数转换等规则。触发场景:用户提及Java包路径、package结构、包名规范、项目包组织、创建类时确定所属包等。

Java包路径生成工具 (java-pkg-gen)

概述

本skill用于生成规范化的Java包路径。根据用户指定的基础包和项目名,结合具体的类类型,生成符合规范的完整包路径。

包结构映射表

包名 用途 备注
constant 常量类
enum 枚举类 关键词冲突用复数
dto 参数传输对象
model 数据库实体映射
service 业务接口
service/impl 业务实现类
util 工具类
controller 控制层 Web接口
config 配置类
exception 异常类
mq 消息队列
interceptor 拦截器
filter 过滤器
vo 视图对象 数据展示层
mapper 数据访问层 数据库交互

核心规则

1. 包名转换规则

  • 项目名转换:中划线转点号,全部小写
    • boot-skillsboot.skills
    • user-centeruser.center
  • 类包名:全部小写,尽量用单数形式
  • 自动获取项目名:优先使用用户提供的项目名,若未提供则自动获取当前工作目录名称

2. 关键字冲突处理

如果包名与Java关键字冲突,使用复数形式:

  • enumenums
  • classclasses
  • interfaceinterfaces

3. 包名去重规则

当前后两个包名重复时,去重处理:

  • boot.bootboot
  • com.simonking.boot.bootcom.simonking.boot

输入要求

用户需要提供:

  1. 基础包:如 com.simonking(必填)
  2. 项目名boot-skills(可选,不提供时自动获取当前工作目录名称)
  3. 类类型:要创建的具体类(可选,不提供时只返回包结构)

项目名获取规则

  1. 优先级:用户提供的项目名 > 自动获取当前目录名
  2. 自动获取:当用户未提供项目名时,自动获取当前工作目录名称
  3. 目录名处理:目录名直接使用,无需转换(中划线转点号规则仍然适用)

自动获取示例

当前工作目录:E:\JAVA_WORKSPACE\open-code\create-skills

用户输入 项目名 最终包路径
基础包: com.simonking create-skills (自动获取) com.simonking.create.skills
基础包: com.simonking, 项目名: boot-skills boot-skills (用户提供) com.simonking.boot.skills

输出格式

完整包结构示例

基础包: com.simonking 项目名: boot-skills

com.simonking.boot.skills
├── com.simonking.boot.skills.constant
├── com.simonking.boot.skills.enums
├── com.simonking.boot.skills.dto
├── com.simonking.boot.skills.model
├── com.simonking.boot.skills.service
│   └── com.simonking.boot.skills.service.impl
├── com.simonking.boot.skills.util
├── com.simonking.boot.skills.controller
├── com.simonking.boot.skills.config
├── com.simonking.boot.skills.exception
├── com.simonking.boot.skills.mq
├── com.simonking.boot.skills.interceptor
├── com.simonking.boot.skills.filter
├── com.simonking.boot.skills.vo
└── com.simonking.boot.skills.mapper

单个类包路径示例

输入:基础包 com.simonking,项目名 boot-skills,类类型 UserService

输出:com.simonking.boot.skills.service.UserService

多种类同时输出

输入:基础包 com.simonking,项目名 boot-skills,类类型 UserController, UserService, UserVO

输出:

UserController: com.simonking.boot.skills.controller.UserController
UserService: com.simonking.boot.skills.service.UserService
UserVO: com.simonking.boot.skills.vo.UserVO

执行流程

  1. 获取项目名
    • 若用户提供项目名,使用用户提供的
    • 若用户未提供,自动获取当前工作目录名称作为项目名
  2. 转换项目名格式(中划线转点,小写)
  3. 根据类类型确定目标包
  4. 拼接完整包路径
  5. 处理去重逻辑
  6. 输出结果

去重逻辑实现

public String deduplicatePackage(String packagePath) {
    String[] parts = packagePath.split("\\.");
    List<String> result = new ArrayList<>();
    for (String part : parts) {
        if (result.isEmpty() || !result.get(result.size() - 1).equals(part)) {
            result.add(part);
        }
    }
    return String.join(".", result);
}

示例:

  • com.simonking.boot.boot.skillscom.simonking.boot.skills
  • com.simonking.user.user.servicecom.simonking.user.service

注意事项

  1. 按需生成:只生成用户指定的类对应的包,不生成无关包
  2. 单复数:默认使用单数,冲突时自动切换复数
  3. 保持简洁:去重后的包路径应当简洁清晰
  4. 自动获取:用户未提供项目名时,自动使用当前工作目录名称

交互示例

示例1:获取完整包结构(指定项目名)

用户输入

基础包:com.simonking
项目名:boot-skills

输出

基础包路径: com.simonking.boot.skills
完整包结构:
- constant: com.simonking.boot.skills.constant
- enums: com.simonking.boot.skills.enums
- dto: com.simonking.boot.skills.dto
- model: com.simonking.boot.skills.model
- service: com.simonking.boot.skills.service
- service.impl: com.simonking.boot.skills.service.impl
- util: com.simonking.boot.skills.util
- controller: com.simonking.boot.skills.controller
- config: com.simonking.boot.skills.config
- exception: com.simonking.boot.skills.exception
- mq: com.simonking.boot.skills.mq
- interceptor: com.simonking.boot.skills.interceptor
- filter: com.simonking.boot.skills.filter
- vo: com.simonking.boot.skills.vo
- mapper: com.simonking.boot.skills.mapper

示例2:自动获取项目名

当前工作目录E:\JAVA_WORKSPACE\open-code\create-skills

用户输入

基础包:com.simonking

自动获取

  • 项目名:create-skills(从目录名自动获取)
  • 转换后:create.skills

输出

项目名: create-skills (自动获取当前目录名)
基础包路径: com.simonking.create.skills
完整包结构:
- constant: com.simonking.create.skills.constant
- enums: com.simonking.create.skills.enums
- dto: com.simonking.create.skills.dto
- model: com.simonking.create.skills.model
- service: com.simonking.create.skills.service
- service.impl: com.simonking.create.skills.service.impl
- util: com.simonking.create.skills.util
- controller: com.simonking.create.skills.controller
- config: com.simonking.create.skills.config
- exception: com.simonking.create.skills.exception
- mq: com.simonking.create.skills.mq
- interceptor: com.simonking.create.skills.interceptor
- filter: com.simonking.create.skills.filter
- vo: com.simonking.create.skills.vo
- mapper: com.simonking.create.skills.mapper

示例3:指定类类型

用户输入

基础包:com.simonking
项目名:user-center
类:UserController, UserService, UserVO

输出

项目包路径: com.simonking.user.center

包映射:
- UserController -> com.simonking.user.center.controller.UserController
- UserService -> com.simonking.user.center.service.UserService
- UserVO -> com.simonking.user.center.vo.UserVO

示例4:需要去重的情况

用户输入

基础包:com.simonking
项目名:boot-boot
类:UserService

处理

  1. 项目名转换:boot-bootboot.boot
  2. 拼接:com.simonking.boot.boot.service.UserService
  3. 去重处理:com.simonking.boot.service.UserService

输出

最终包路径: com.simonking.boot.service.UserService
(已自动去重:boot.boot -> boot)

示例5:关键词冲突

用户输入

基础包:com.simonking
项目名:enum-test
类:StatusEnum

输出

包路径: com.simonking.enum.test.enums.StatusEnum
(enum为关键字,自动使用复数形式enums)

About

java的skills技能包

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors