共计 3045 个字符,预计需要花费 8 分钟才能阅读完成。
目标
将 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/9cf…
参数定义
https://blog.csdn.net/z691837…