Maven中調(diào)試Annotation Processor

# Maven中調(diào)試Annotation Processor

[TOC]

## 簡(jiǎn)述

臨時(shí)寫的記錄,日后再補(bǔ)充完整;

不涉及處理器如何開發(fā),如有需要可以參考[ANNOTATION PROCESSING 101](http://hannesdorfmann.com/annotation-processing/annotationprocessing101);

替代方案:用Gradle開發(fā),比maven簡(jiǎn)單一些,安卓相關(guān)的apt教程泛濫;如有需要可以參考[Debugging an Annotation Processor in your project](https://blog.xmartlabs.com/2016/03/28/Debugging-an-Annotator-Processor-in-your-project/)

## 需求

1. maven 項(xiàng)目

2. 開發(fā)了編譯時(shí)注解的注解處理器

3. 需要調(diào)試注解處理器

## 問題

1. 注解處理器能否和項(xiàng)目放一起

? 目前結(jié)論:不能,必須另外創(chuàng)建一個(gè)Maven項(xiàng)目寫注解處理器再`mvn install`到本地供其他項(xiàng)目使用

2. idea與maven遠(yuǎn)端調(diào)試

3. pom如何關(guān)聯(lián)處理器

## idea遠(yuǎn)端調(diào)試

參見[How to debug a Java Annotation Processor using IntelliJ & Maven](http://blog.jensdriller.com/how-to-debug-a-java-annotation-processor-using-intellij/),該文主要解決了idea如何設(shè)置遠(yuǎn)端調(diào)試

### mvnDebug

調(diào)試maven項(xiàng)目使用的編譯時(shí)注解,在Terminal中輸入`mvnDebug`相關(guān)的指令,比如`mvnDebug clean package`

執(zhí)行后會(huì)立刻掛起,等待調(diào)試器attach(可以想象成安卓開發(fā)者模式中的調(diào)試器)

### Remote調(diào)試器

此時(shí)在idea的configuration中選中配置的Remote調(diào)試器并點(diǎn)擊瓢蟲按鈕就會(huì)給`mvnDebug`掛起的任務(wù)attach調(diào)試器,任務(wù)即會(huì)開始執(zhí)行

so上有一po較為完整的流程說明

[Debug Java annotation processors using Intellij and Maven](https://stackoverflow.com/questions/31345893/debug-java-annotation-processors-using-intellij-and-maven)

[TODO]

## pom如何關(guān)聯(lián)處理器

這個(gè)花費(fèi)了最多的時(shí)間,國(guó)內(nèi)國(guó)外各種答案都沒有解決,最后慢慢試出來的

1. maven-compiler-plugin配置下jdk版本

? ```xml

? <plugin>

? ? ? <artifactId>maven-compiler-plugin</artifactId>

? ? ? <version>3.7.0</version>

? ? ? <configuration>

? ? ? ? ? <source>1.8</source>

? ? ? ? ? <target>1.8</target>

? ? ? </configuration>

? </plugin>

? ```

2. 依賴?yán)锫暶魈幚砥?/p>

? ```xml

? <dependencies>

? <!-- The annotation processor -->

? ? ? <dependency>

? ? ? ? ? <groupId>cn.rexih.java</groupId>

? ? ? ? ? <artifactId>test-anno-processor</artifactId>

? ? ? ? ? <version>1.0-SNAPSHOT</version>

? ? ? </dependency>

? </dependencies>

? ```

? ?

3. idea -> settings -> Build,Execution,Deployment -> Complier -> Annotation Processors中enable即可,不用做其他事情

4. 不須要參照其他文章去改pom中`execution`、`process`之類的,越改越有問題

## 其他

1. 在目標(biāo)項(xiàng)目中如何打斷點(diǎn):

>? 目標(biāo)項(xiàng)目需要關(guān)聯(lián)注解處理器源碼,如果有source jar就下載source jar,沒有的話選擇源碼;總而言之是在處理器的源碼上打斷點(diǎn)。

## 參考資料

[Idea遠(yuǎn)程調(diào)試(mvnDebug,Java命令)](http://blog.sina.com.cn/s/blog_6af189790102wh6c.html)

[自定義注解之編譯時(shí)注解(RetentionPolicy.CLASS)(一) ](https://blog.csdn.net/github_35180164/article/details/52121038)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容