Это не красиво, но это то, что я делаю.(Источники Задача javac ant Страница man javac ) Используя атрибут compilerarg, я могу передать аргументы, связанные с обработкой аннотаций, которые напрямую не поддерживаются задачей javac ant.
<javac srcdir="${src}" destdir="${classes}" ... >
....
<compilerarg line="-processorpath ${processorpath}"/>
<compilerarg line="-processor ${processor}"/>
<compilerarg line="-s ${whereToPutGeneratedClassFiles}"/>
</javac>
Я не использую APT tool , потому что документация гласит
Имейте в виду, что инструмент Apt действительно является нестабильной частью инфраструктуры JDK, поэтому можетрадикально изменить в будущих версиях.В частности, он, вероятно, устарел в JDK 6, который может запускать процессоры аннотаций как часть javac.
Если вы действительно не заботитесь о аргументах компилятора, вы можете сделать так, чтобы ваши процессоры аннотаций выглядели следующим образом
<jar destfile="${annotationprocessorjar}" ... >
...
<service type="javax.annotation.processing.Processor" provider="${your.annotation.processor.fully.qualified.name}"/>
</jar>
Тогда вы можете сделать
<javac ... make sure ${annotationprocessorjar} is in classpath>
</javac>