這個問題似乎很明顯,但實施對我來說很難。如何用Ant編譯註釋處理器?
我的目標是編寫Ant構建腳本到編譯需要另一班由註解處理器生成一些類。 我有一個自定義註釋,它的處理器實現(繼承自AbstractProcessor
類)。
據我瞭解,我需要:
- 編譯標註處理
- 運行編譯器對一些註解類來生成新的。
- 編譯需要生成的類
的代碼(步驟1 & 2)類:
<target name="compileAnnotationProcessor">
<javac destdir="${OUTPUT_DIR}"
debug="true"
failonerror="true"
includeantruntime="false"
classpath="${java.class.path}">
<src>
<pathelement path="${PROJECT_DIR}/tools/src"/>
</src>
<include name="/path/to/annotation/processor/package/**"/>
</javac>
</target>
<target name="generateFilesWithAPT" depends="compileAnnotationProcessor">
<javac destdir="${OUTPUT_DIR}"
includeantruntime="false"
listfiles="false"
fork="true"
debug="true"
verbose="true">
<src>
<pathelement path="${PROJECT_DIR}/common/src/"/>
</src>
<include name="/path/to/files/to/compile/**"/>
<classpath>
<pathelement path="${OUTPUT_DIR}"/>
<pathelement path="${java.class.path}"/>
</classpath>
<compilerarg line="-proc:only"/>
<compilerarg line="-processorpath ${OUTPUT_DIR}/path/to/annotation/processor/package/annProcessorImplement"/>
</javac>
</target>
實際上,第一任務執行良好和編譯。 Annotation處理器實現的類文件。它正在停止在第二個任務。
螞蟻說:Annotation processing without compilation requested but no processors were found.
我在做什麼錯? 也許我應該把註釋處理器類放在.jar
?或者提供一個帶有.class擴展名的文件名作爲-processorpath
參數? 我嘗試了幾種方案,但沒有什麼幫助..
注:
我使用的,而不是apt
之一,因爲documentation是apt工具以及API com.sun.mirror
不贊成索賠螞蟻javac
任務。 我也看過這個question,但沒有信息如何正確編譯處理器。
我使用:
- 的Java 1.6
- 螞蟻1.8.2
是否可以在沒有放置註釋處理器(加註釋)的情況下做同樣的事情?罐? – ivstas
至少註釋處理程序通常應該位於不同於使用註釋註釋的類的jar中,因爲註釋處理在編譯註釋處理程序時必須禁用。您可以將註釋和註釋處理器放置在兩個獨立的jar中,但是您必須聲明它們兩者之間的依賴關係來處理註釋,我認爲在大多數情況下這並不舒服。 – Puce
需要說明的是,我並不是說jar應該只包含註釋和註釋處理器,但它不應該包含任何需要由註釋處理器處理的類。 – Puce