Esto no es bonito, pero es lo que hago. (Fuentes javac ant taskjavac man page) Usando el atributo compilerarg puedo pasar los argumentos relacionados con el procesamiento de la anotación que no son directamente compatibles con la tarea javac ant.
<javac srcdir="${src}" destdir="${classes}" ... >
....
<compilerarg line="-processorpath ${processorpath}"/>
<compilerarg line="-processor ${processor}"/>
<compilerarg line="-s ${whereToPutGeneratedClassFiles}"/>
</javac>
Yo no uso el APT tool debido a que la documentación indica
Be advised that the Apt tool does appear to be an unstable part of the JDK framework, so may change radically in future versions. In particular it is likely to be obsolete in JDK 6, which can run annotation processors as part of javac.
Si realmente no se preocupan por args del compilador, puede sacudir sus procesadores de anotación como esto
<jar destfile="${annotationprocessorjar}" ... >
...
<service type="javax.annotation.processing.Processor" provider="${your.annotation.processor.fully.qualified.name}"/>
</jar>
A continuación, puede hacer
<javac ... make sure ${annotationprocessorjar} is in classpath>
</javac>
Intenté en ambos sentidos pero cada vez el objetivo ant "completado en 0" y realmente no generaba el archivo o incluso imprimía mis instrucciones de depuración. Curiosamente, cuando lo ejecuté desde la línea de comandos, recibí el error de javac Annotation Processor mypackage.MyProcessor no encontrado. ¿Me estoy perdiendo de algo? – user18943
Algo obviamente está mal. ¿Qué versión de javac usa? ¿Mipackage.MyProcessor se extiende en desuso 1,5 (http://download.oracle.com/javase/1.5.0/docs/guide/apt/mirror/com/sun/mirror/apt/AnnotationProcessor.html) o el actual 1.6 (http : //download-llnw.oracle.com/javase/6/docs/api/javax/annotation/processing/Processor.html)? – emory
Oye, ese era el eslabón perdido. Estaba usando las API espejo de javac v.1.6 y jdk1.5. Lo encontré escrito en todas partes que la herramienta apt está en desuso, pero no descubrió que la API reflejada también estaba en desuso. Eso es incómodo. De todos modos, solo funciona cuando compilo el procesador y luego compilo otras fuentes que proporcionan argumentos de proceso y de ruta de proceso. Todavía no hará nada si saco el procesador y lo uso en classpath (ya he dado el archivo javax.annotation.processing.Processor que tiene mypackage.MyProcessor en META-INF/services). – user18943