java注釋轉(zhuǎn)json插件開發(fā)實(shí)戰(zhàn)詳解
目的
將java的代碼注釋轉(zhuǎn)換為json格式,并寫入文件
本文介紹了完整的開發(fā)流程及如何使用
運(yùn)行環(huán)境
jdk1.8
maven3.x
設(shè)計(jì)思想
系統(tǒng)構(gòu)思
- 編譯完成的class里沒有注釋的,所以注釋信息只有在編譯代碼時(shí)存儲(chǔ)起來
- 將能夠生成javadoc.json的代碼做成maven插件
關(guān)鍵技術(shù)算法 需要實(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)容看是否會(huì)調(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ù),并且走緩存,此時(shí)獲取的是服務(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)屬性表達(dá)式對mojo參數(shù)進(jìn)行賦值 @parameter defaultValue="aValue/${anExpression}":提供一個(gè)默認(rèn)值
開發(fā)流程
項(xiàng)目構(gòu)建
mvn archetype:generate -DgroupId=com.example -DartifactId=javadoc-json-maven-plugin -DarchetypeArtifactId=maven-archetype-mojo -DinteractiveMode=false
使用插件
Install
在javadoc-json-maven-plugin項(xiàng)目中執(zhí)行maven的install命令,
將插件安裝到本地倉庫
引入自定義插件
在其它項(xiàng)目引入插件測試
展開插件可以看到Mojo列表,由于項(xiàng)目里只有一個(gè)Mojo,且Mojo上用注釋@goal指定了名稱為generate,所以這里只能看到一個(gè)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就會(huì)執(zhí)行這個(gè)插件。
執(zhí)行完畢后,可以看到項(xiàng)目根目錄的target文件下多了個(gè)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.dbjr.com.cn/article/283906.htm
參數(shù)定義 http://www.dbjr.com.cn/article/122552.htm
以上就是java注釋轉(zhuǎn)json插件開發(fā)實(shí)戰(zhàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于java注釋轉(zhuǎn)json的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot整合Graylog做日志收集實(shí)現(xiàn)過程
這篇文章主要為大家介紹了SpringBoot整合Graylog做日志收集實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12使用mvn?deploy命令上傳jar包的實(shí)現(xiàn)
本文介紹了使用mvndeploy:deploy-file命令將本地倉庫中的JAR包重新發(fā)布到Maven私服,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03SpringBoot時(shí)間格式化的方法小結(jié)
SpringBoot中的時(shí)間格式化通常指的是將Java中的日期時(shí)間類型轉(zhuǎn)換為指定格式的字符串,或者將字符串類型的時(shí)間解析為Java中的日期時(shí)間類型,本文小編將給大家詳細(xì)總結(jié)了SpringBoot時(shí)間格式化的方法,剛興趣的小伙伴跟著小編一起來看看吧2023-10-10如果淘寶的七天自動(dòng)確認(rèn)收貨讓你設(shè)計(jì)你用Java怎么實(shí)現(xiàn)
在面試的時(shí)候如果面試官問淘寶的七天自動(dòng)確認(rèn)收貨讓你設(shè)計(jì),你會(huì)怎么具體實(shí)現(xiàn)呢?跟著小編看一下下邊的實(shí)現(xiàn)過程,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值2021-09-09java實(shí)現(xiàn)文本文件刪除空行的示例分享
這篇文章主要介紹了java實(shí)現(xiàn)文本文件刪除空行的示例,需要的朋友可以參考下2014-04-04Spring Batch輕量級(jí)批處理框架實(shí)戰(zhàn)
本文主要介紹了Spring Batch輕量級(jí)批處理框架實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10RocketMq同組消費(fèi)者如何自動(dòng)設(shè)置InstanceName
這篇文章主要介紹了RocketMq同組消費(fèi)者如何自動(dòng)設(shè)置InstanceName問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06SpringBoot整合Kaptcha實(shí)現(xiàn)圖片驗(yàn)證碼加減乘除功能
在開發(fā)Web應(yīng)用時(shí),驗(yàn)證碼是一個(gè)常見的功能,它可以幫助我們防止機(jī)器人的惡意操作,今天我們將學(xué)習(xí)如何使用Kaptcha生成圖片驗(yàn)證碼,并自定義驗(yàn)證碼內(nèi)容為100以內(nèi)的加減乘除運(yùn)算,感興趣的朋友跟隨小編一起看看吧2024-07-07IDEA 重新導(dǎo)入依賴maven 命令 reimport的方法
這篇文章主要介紹了IDEA 重新導(dǎo)入依賴maven 命令 reimport的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04SpringMVC對自定義controller入?yún)㈩A(yù)處理方式
這篇文章主要介紹了SpringMVC對自定義controller入?yún)㈩A(yù)處理方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09