java注釋轉(zhuǎn)json插件開發(fā)實戰(zhàn)詳解
目的
將java的代碼注釋轉(zhuǎn)換為json格式,并寫入文件
本文介紹了完整的開發(fā)流程及如何使用
運行環(huán)境
jdk1.8
maven3.x
設(shè)計思想
系統(tǒng)構(gòu)思
- 編譯完成的class里沒有注釋的,所以注釋信息只有在編譯代碼時存儲起來
- 將能夠生成javadoc.json的代碼做成maven插件
關(guān)鍵技術(shù)算法 需要實現(xiàn)Doclet
必須引入下述jar包, 來導(dǎo)入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": "根據(jù)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": "根據(jù)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": "修改內(nèi)容看是否會調(diào)整緩存",
... 省略了一大堆
}類代碼注釋規(guī)范
/** * @Title: PersonController * @Package: com/example/springbootcache/controller/PersonController.java * @Description: 用戶信息接口 * @author: zhaozhiwei * @date: 2022/10/25 下午8:23 * @version: V1.0 */
方法代碼注釋規(guī)范
/** * @date: 2022/10/25-上午10:19 * @author: zhaozhiwei * @method: findByID * @param id : 唯一id * @return: com.lx.demo.springbootcache.domain.Person * @Description: 根據(jù)id獲取用戶信息 * 獲取十次, 只有第一次是讀庫,后續(xù)都是取緩存 * 直接刪掉redis緩存里的內(nèi)容,仍然可以獲取數(shù)據(jù),并且走緩存,此時獲取的是服務(wù)緩存ehcache中的信息 * seq 10 |xargs -i curl -XGET 'http://localhost:8080/persons/2' */
參數(shù)定義
@parameter額外屬性:
@parameter alias="<aliasName>":為mojo參數(shù)使用別名
@parameter expression="${aSystemProperty}":使用系統(tǒng)屬性表達式對mojo參數(shù)進行賦值
@parameter defaultValue="aValue/${anExpression}":提供一個默認值開發(fā)流程
項目構(gòu)建
mvn archetype:generate -DgroupId=com.example -DartifactId=javadoc-json-maven-plugin -DarchetypeArtifactId=maven-archetype-mojo -DinteractiveMode=false
使用插件
Install
在javadoc-json-maven-plugin項目中執(zhí)行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>執(zhí)行插件
雙擊javadoc-json:generate就會執(zhí)行這個插件。
執(zhí)行完畢后,可以看到項目根目錄的target文件下多了個javadoc.json文件。
命令行執(zhí)行插件(可選)
命令格式為mvn groupId:artifactId:version:goal,執(zhí)行如下命令:
mvn com.<example:javadoc-json-maven-plugin:1.0.0-SNAPSHOT:generate>
由于我們的插件命名符合規(guī)范,所以上面的命令可以簡寫為:
mvn javadoc-json:generate
尚未解決的問題
javadoc插件去掉異常提示
參考
maven插件開發(fā) http://www.fzitv.net/article/283906.htm
參數(shù)定義 http://www.fzitv.net/article/122552.htm
以上就是java注釋轉(zhuǎn)json插件開發(fā)實戰(zhàn)詳解的詳細內(nèi)容,更多關(guān)于java注釋轉(zhuǎn)json的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
部署SpringBoot項目到Linux服務(wù)器數(shù)據(jù)盤的完整流程
這篇文章講述了如何在Linux服務(wù)器上掛載數(shù)據(jù)盤并部署SpringBoot項目,具體步驟包括查看磁盤狀態(tài)、分區(qū)與格式化、掛載分區(qū)、配置開機自動掛載等,以及上傳項目文件、編寫啟動腳本、啟動項目并測試、配置Systemd服務(wù)管理,需要的朋友可以參考下2025-11-11
Spring Boot 開發(fā)環(huán)境熱部署詳細教程
這篇文章主要介紹了Spring Boot 開發(fā)環(huán)境熱部署,本文給大家介紹了Spring Boot 開發(fā)環(huán)境熱部署的原理及快速配置方法,通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
Spring線程池ThreadPoolTaskExecutor配置與實踐方式
文章介紹了Spring框架的ThreadPoolTaskExecutor,其主要功能包括線程池管理、任務(wù)執(zhí)行及高級特性,核心參數(shù)有核心線程數(shù)、最大線程數(shù)、隊列容量等,文中還詳細解釋了拒絕策略、線程上下文類加載器等高級功能,并提供了配置示例和使用建議,幫助開發(fā)者有效管理線程池2026-03-03
mybatis-plus通用枚舉@JsonValue接收參數(shù)報錯No enum constant
最近在使用mybatis-plus時用到了通用枚舉,遇到了問題,本文主要介紹了mybatis-plus通用枚舉@JsonValue接收參數(shù)報錯No enum constant,具有一定的參考價值,感興趣的可以了解一下2023-09-09

