java注释转json插件开发实战详解

 更新时间:2023年06月19日 11:03:45   作者:离线请留言  
这篇文章主要为大家介绍了java注释转json插件开发实战详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

目的

将java的代码注释转换为json格式,并写入文件

本文介绍了完整的开发流程及如何使用

运行环境

jdk1.8

maven3.x

设计思想

系统构思

  • 编译完成的class里没有注释的,所以注释信息只有在编译代码时存储起来
  • 将能够生成javadoc.json的代码做成maven插件

关键技术算法 需要实现Doclet

必须引入下述jar包, 来导入com.sun.javadoc.Doclet

<dependency>
    <groupId>com.sun</groupId>
    <artifactId>tools</artifactId>
    <version>1.8</version>
    <scope>system</scope>
    <systemPath>/home/zhaozhiwei/applications/jdk1.8.0_181/lib/tools.jar</systemPath>
</dependency>

代码路径

<https:github.com:zhaozhiwei1992/javadoc-json-maven-plugin>

入口: com.example.Javadoc2JsonMojo#execute

生成javadoc.json文件

com.example.CommentToJson(做成maven插件使用)

{
  "com.example.web.rest.PersonResource.findByID(java.lang.Long)#date": "2022/10/25-上午10:19",
  "com.example.web.rest.PersonResource#Package": "com/example/springbootcache/controller/PersonController.java",
  "com.example.web.rest.PersonResource.findByID(java.lang.Long)#Description": "根据id获取用户信息",
  "com.example.web.rest.PersonResource.save(Person)#method": "save",
  "com.example.web.rest.PersonResource#author": "zhaozhiwei",
  "com.example.web.rest.PersonResource.deleteByID(java.lang.Long)#Description": "根据id删除person信息",
  "com.example.web.rest.PersonResource#Title": "PersonController",
  "com.example.web.rest.PersonResource.update(Person)#date": "2022/10/25-上午10:21",
  "com.example.web.rest.PersonResource.save(Person)#Description": "保存方法",
  "com.example.web.rest.PersonResource#Description": "用户信息接口",
  "com.example.web.rest.PersonResource#date": "2022/10/25 下午8:23",
  "com.example.web.rest.PersonResource.update(Person)#Description": "修改内容看是否会调整缓存",
  ... 省略了一大堆
}

类代码注释规范

/**
 * @Title: PersonController
 * @Package: com/example/springbootcache/controller/PersonController.java
 * @Description: 用户信息接口
 * @author: zhaozhiwei
 * @date: 2022/10/25 下午8:23
 * @version: V1.0
 */

方法代码注释规范

/**
 * @date: 2022/10/25-上午10:19
 * @author: zhaozhiwei
 * @method: findByID
  * @param id : 唯一id
 * @return: com.lx.demo.springbootcache.domain.Person
 * @Description: 根据id获取用户信息
 * 获取十次, 只有第一次是读库,后续都是取缓存
 * 直接删掉redis缓存里的内容,仍然可以获取数据,并且走缓存,此时获取的是服务缓存ehcache中的信息
 * seq 10 |xargs -i curl -XGET 'http://localhost:8080/persons/2'
 */

参数定义

@parameter额外属性:
@parameter alias="<aliasName>":为mojo参数使用别名
@parameter expression="${aSystemProperty}":使用系统属性表达式对mojo参数进行赋值
@parameter defaultValue="aValue/${anExpression}":提供一个默认值

开发流程

项目构建

mvn archetype:generate -DgroupId=com.example -DartifactId=javadoc-json-maven-plugin -DarchetypeArtifactId=maven-archetype-mojo -DinteractiveMode=false

使用插件

Install

在javadoc-json-maven-plugin项目中执行maven的install命令,
将插件安装到本地仓库

引入自定义插件

在其它项目引入插件测试

展开插件可以看到Mojo列表,由于项目里只有一个Mojo,且Mojo上用注释@goal指定了名称为generate,所以这里只能看到一个javadoc-json:generate

<plugin>
                <groupId>com.example</groupId>
                <artifactId>javadoc-json-maven-plugin</artifactId>
                <version>2.0-SNAPSHOT</version>
                <configuration>
<!--                    指定java注释扫描目录-->
                    <basePackage>com/example/web/rest</basePackage>
                </configuration>
            </plugin>

执行插件

双击javadoc-json:generate就会执行这个插件。

执行完毕后,可以看到项目根目录的target文件下多了个javadoc.json文件。

命令行执行插件(可选)

命令格式为mvn groupId:artifactId:version:goal,执行如下命令:

mvn com.<example:javadoc-json-maven-plugin:1.0.0-SNAPSHOT:generate>

由于我们的插件命名符合规范,所以上面的命令可以简写为:

mvn javadoc-json:generate

尚未解决的问题

javadoc插件去掉异常提示

参考

maven插件开发 https://www.jb51.net/article/283906.htm

参数定义 https://www.jb51.net/article/122552.htm

以上就是java注释转json插件开发实战详解的详细内容,更多关于java注释转json的资料请关注脚本之家其它相关文章!

相关文章

  • 部署SpringBoot项目到Linux服务器数据盘的完整流程

    部署SpringBoot项目到Linux服务器数据盘的完整流程

    这篇文章讲述了如何在Linux服务器上挂载数据盘并部署SpringBoot项目,具体步骤包括查看磁盘状态、分区与格式化、挂载分区、配置开机自动挂载等,以及上传项目文件、编写启动脚本、启动项目并测试、配置Systemd服务管理,需要的朋友可以参考下
    2025-11-11
  • Spring Boot 开发环境热部署详细教程

    Spring Boot 开发环境热部署详细教程

    这篇文章主要介绍了Spring Boot 开发环境热部署,本文给大家介绍了Spring Boot 开发环境热部署的原理及快速配置方法,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • SpringBoot整合模板引擎过程代码实例

    SpringBoot整合模板引擎过程代码实例

    这篇文章主要介绍了SpringBoot整合模板引擎过程代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 基于jdbc处理Clob的使用介绍

    基于jdbc处理Clob的使用介绍

    本篇文章是对jdbc处理Clob的使用进行了分析介绍,需要的朋友参考下
    2013-05-05
  • Spring线程池ThreadPoolTaskExecutor配置与实践方式

    Spring线程池ThreadPoolTaskExecutor配置与实践方式

    文章介绍了Spring框架的ThreadPoolTaskExecutor,其主要功能包括线程池管理、任务执行及高级特性,核心参数有核心线程数、最大线程数、队列容量等,文中还详细解释了拒绝策略、线程上下文类加载器等高级功能,并提供了配置示例和使用建议,帮助开发者有效管理线程池
    2026-03-03
  • java 音频转换wav格式标准音频的操作

    java 音频转换wav格式标准音频的操作

    这篇文章主要介绍了java 音频转换wav格式标准音频的操作,主要是使用ffmpeg命令进行转换,该工具类主要是为了将各类音频转为wav标准格式,其中可以调节采样率、声道数等指标,依赖maven环境,需要的朋友可以参考下
    2021-10-10
  • Java并发编程系列之LockSupport的用法

    Java并发编程系列之LockSupport的用法

    这篇文章主要为大家介绍了Java LockSupport的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助
    2021-11-11
  • 2020最新版idea激活教程(推荐)

    2020最新版idea激活教程(推荐)

    这篇文章主要介绍了2020最新版idea激活教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • mybatis-plus通用枚举@JsonValue接收参数报错No enum constant

    mybatis-plus通用枚举@JsonValue接收参数报错No enum constant

    最近在使用mybatis-plus时用到了通用枚举,遇到了问题,本文主要介绍了mybatis-plus通用枚举@JsonValue接收参数报错No enum constant,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Resttemplate中设置超时时长方式

    Resttemplate中设置超时时长方式

    这篇文章主要介绍了Resttemplate中设置超时时长方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论