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.jianshu.com/p/9cfe599b3c5e
参数定义
https://blog.csdn.net/z69183787/article/details/52984622
java注释转json插件开发实战的更多相关文章
- json相关类库,java对象与json相互转换
有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...
- JAVA中使用JSON进行数据传递
最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作. 其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JS ...
- 转载:JAVA中使用JSON进行数据传递
转载网址:http://www.cnblogs.com/undead/archive/2012/07/18/2594900.html 最近在做一个基于JAVA Servlet的WEB应用以及对应的An ...
- GSON中Java对象与JSON互相转换——(一)
json的转换插件是通过java的一些工具,直接将java对象或集合转换成json字符串. 常用的json转换工具有如下几种: 1)jsonlib 2)Gson:google 3)fastjson:阿 ...
- Java并发编程原理与实战五:创建线程的多种方式
一.继承Thread类 public class Demo1 extends Thread { public Demo1(String name) { super(name); } @Override ...
- 【eclipse插件开发实战】Eclipse插件开发3——OSGi、RCP
Eclipse插件开发实战3--OSGi.RCP 一.OSGi 1. 什么是OSGi框架 OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环境里的服务 ...
- 【eclipse插件开发实战】Eclipse插件开发2——SWT
Eclipse插件开发实战2--SWT 一.SWT简介 SWT(StandardWidget Toolkit) 标准小窗口工具箱,一开源的GUI编程框架,与AWT/Swing有相似的用处,eclips ...
- java中的json
josn: 一种数据传输格式,与开发语言无关,轻量级 一开始是javaScript的,但是后面比较流传,几乎所有语言都有相应的使用API 数据结构: Object---对象 使用花括号{}包含的键值对 ...
- JAVA企业级应用服务器之TOMCAT实战
JAVA企业级应用服务器之TOMCAT实战 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App ...
- java对象与json串互转
1:java对象与json串转换: java对象—json串: JSONObject JSONStr = JSONObject.fromObject(object); String str = JSO ...
随机推荐
- js-xlsx 前段读取excel
JavaScript读取和导出excel示例(基于js-xlsx) 放入参考链接 http://demo.haoji.me/2017/02/08-js-xlsx/ github官网 https://g ...
- 高性能计算-openmp-多线程缓存一致性(9)
1. 背景介绍 L1 L2 cache是单核独享,L3是多核共享.如果多线程访问共享一维数组的连续元素,先读入第一个线程的L1 缓存中,其他线程访问缓存不命中需要加载,并且数据的更改后,标记为脏数据, ...
- core-js版本过低,需要更新但是更新失败的原因
ore-js@2.6.12: core-js@.3 is no longer maintained and not recommended for usage due to the number of ...
- Java反编译器剖析
本文由 ImportNew - 邬柏 翻译自 javacodegeeks.如需转载本文,请先参见文章末尾处的转载要求. Importnew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的Jav ...
- Java网络爬虫的实现
记得在刚找工作时,隔壁的一位同学在面试时豪言壮语曾实现过网络爬虫,当时的景仰之情犹如滔滔江水连绵不绝.后来,在做图片搜索时,需要大量的测试图片,因此萌生了从Amazon中爬取图书封面图片的想法,从网上 ...
- gitlab之配置文件.gitlab-ci.yml
自动化部署給我们带来的好处 自动化部署的好处体现在几个方面 1.提高前端的开发效率和开发测试之间的协调效率 Before 如果按照传统的流程,在项目上线前的测试阶段,前端同学修复bug之后,要手动把代 ...
- 使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
前言 在软件开发领域,性能基准测试是确保软件系统高效.稳定运行的重要环节.它可以帮助你评估应用程序的性能,了解其在不同条件下的响应时间.吞吐量.资源利用率等.通过基准测试,你可以确定系统在处理特定工作 ...
- openEuler欧拉安装Gitlab
1. 安装GitLab wget https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh sud ...
- kubectl cp
简介 将文件.目录复制到容器:或从容器复制文件.目录. kubectl cp <file-spec-src> <file-spec-dest> 示例 # !!!重要提示!!! ...
- MySQL 8.0 相对于 MySQL 5.7
MySQL 8.0 相对于 MySQL 5.7,有很多新特性,比如:快速加列.原子 DDL.不可见索引.额外端口.角色管理等.这一节内容,就不讲这些新特性了,只来聊聊最近在工作学习过程中遇到的几处细节 ...