Soru açık gibi görünüyor, ancak uygulama benim için oldukça zor.Ek açıklama işlemcisi Ant ile nasıl derlenir?
Amacım başka sınıflar Ek Açıklama İşleyen tarafından oluşturulan gerektiren bazı sınıfları derlemek Ant yapı komut dosyasıiçin yazmaktır. Özel bir ek açıklamalarım var ve işlemci uygulaması (AbstractProcessor
sınıfından miras alınmış).
- yenilerini oluşturmak için bazı açıklamalı sınıflar üzerinde ek açıklama İşlemci
- çalıştırın derleyici derleme: Anlıyorum gibi
girmem gerekiyor.
- sınıfları
kodu (aşama 1 & 2) oluşturulan gerektiren sınıfları derleme:
<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>
Aslında, ilk görevi iyi bir performans gösteren ve derler. Annotation işlemci uygulaması için sınıf dosyası. 2. görevde duruyor.
Ant diyor ki: Ben yanlış ne yapıyorum Annotation processing without compilation requested but no processors were found.
? Belki ek açıklama işlemci sınıfını .jar
içine koymalıyım? Veya .class uzantılı bir dosya adı -processorpath
argümanı olarak mı sağlar? Birkaç seçenekleri denedik ama hiçbir şey
Notlar .. yardımcı olur:
yerine apt aracı olarak com.sun.mirror
API kullanımdan kaldırılmıştır apt
bir documentation çünkü iddiaların karınca javac
görevi kullanıyorum. Ayrıca bu question'u inceledim, ancak işlemciyi doğru şekilde nasıl derleyeceğimiz hakkında bir bilgi yok.
kullanıyorum:
- Java 1.6
- Ant 1.8.2
Aynı işlemi, ek açıklama işlemcisi (artı ek açıklama) yerleştirmeden de yapmak mümkündür.jar? – ivstas
En azından ek açıklama işlemcileri derleme ek açıklamaları derlenirken ek açıklama işleminin devre dışı bırakılması gerektiğinden, ek açıklama notu genellikle notlarınızla açıklanmış sınıflardan farklı bir kavanozda olmalıdır. Ek açıklamaları ve notlandırma işlemcilerini iki ayrı kavanozda alabilirsiniz, ancak daha sonra çoğu durumda daha rahat olan ek açıklamaları işlemek için her ikisine de bağımlılık beyan etmelisiniz. – Puce
Açık olmak gerekirse, kavanozun yalnızca ek açıklama ve açıklama işlemcileri içermesi gerektiği anlamına gelmez, ancak bir ek açıklama işlemcisi tarafından işlenmesi gereken herhangi bir sınıf içermemelidir. – Puce