Dove posso trovare l'attività Antlr Ant?
Domanda
Sto provando a chiamare un'attività Antlr nel mio Ant build.xml come segue:
<path id="classpath.build">
<fileset dir="${dir.lib.build}" includes="**/*.jar" />
</path>
...
<target name="generate-lexer" depends="init">
<antlr target="${file.antlr.lexer}">
<classpath refid="classpath.build"/>
</antlr>
</target>
Ma Ant non riesce a trovare la definizione dell'attività.Ho inserito tutto quanto segue dir.lib.build
:
- antlr-3.1.jar
- antlr-2.7.7.jar
- antlr-runtime-3.1.jar
- stringtemplate-3.2.jar
Ma nessuno di questi sembra avere la definizione del compito.(Ho anche provato a mettere quei barattoli nel mio classpath Ant;stesso problema.)
Soluzione
L'attuale jar delle attività Antlr è disponibile all'indirizzo http://www.antlr.org/share/1169924912745/antlr3-task.zip
Può essere trovato su antlr.org sito Web nella sezione "Condivisione file".
Altri suggerimenti
Dovresti usare il jar antlrall.jar.Puoi andare avanti e inserirlo semplicemente nell'installazione di Ant, ma ciò significa che funzionerà solo per quell'installazione.Archiviamo il jar e utilizziamo taskdef per caricare il file jar in modo che non diventi un altro passaggio per gli sviluppatori quando iniziano a far parte del team o passano a un nuovo computer.
- Antlr http://ant.apache.org/manual/Tasks/antlr.html
- Utilizzando taskdef http://www.onjava.com/pub/a/onjava/2004/06/02/anttask.html
Ho appena capito che funziona da solo.Mi ci è voluta un'ora.uff.Comunque,
Passo 1:scarica l'attività ant-antlr3 da
http://www.antlr.org/share/1169924912745/antlr3-task.zip
Passo 2:copialo dove la formica può vederlo.Il mio Mac:
sudo cp /usr/local/lib/ant-antlr3.jar /usr/share/ant/lib/
la mia macchina Linux:
sudo cp /tmp/ant-antlr3.jar /usr/local/apache-ant-1.8.1/lib/
Passaggio 3:assicurati che antlr2, antlr3, ST siano nel classpath.Tutto in uno è qui:
http://antlr.org/download/antlr-3.3-complete.jar
Passaggio 4:utilizzare in build.xml
<path id="classpath">
<pathelement location="${antlr3.jar}"/>
<pathelement location="${ant-antlr3.jar}"/>
</path>
<target name="antlr" depends="init">
<antlr:ant-antlr3 xmlns:antlr="antlib:org/apache/tools/ant/antlr"
target="src/T.g"
outputdirectory="build">
<classpath refid="classpath"/>
</antlr:ant-antlr3>
</target>
Ho appena aggiunto una voce faq:
http://www.antlr.org/wiki/pages/viewpage.action?pageId=24805671
Il modo più semplice per eseguire Antlr è eseguire Antlr JAR:
<project default="antlr">
<target name="antlr">
<java jar="antlr-4.1-complete.jar" fork="true">
<arg value="grammar.g4"/>
</java>
</target>
</project>
Questo è un po' più lento, perché esegue il fork della JVM ed esegue Antlr anche se la grammatica non è cambiata.Ma funziona allo stesso modo con ogni versione di Antlr e non necessita di obiettivi speciali.
Su Ubuntu questo dovrebbe renderlo disponibile:
sudo apt-get install ant-optional
Ulteriori informazioni oltre a ciò che tutti gli altri hanno contribuito finora:
IL ant-optional
il pacchetto in Ubuntu include l'attività fornita con Ant 1.8.2 che è un'attività per ANTLR 2.7.2, quindi fallirà con un errore come descritto in questo articolo.Il metodo descritto da Terence è il modo migliore per utilizzare l'attività ANTLR3.
Se non disponi dell'accesso root su una macchina Linux, puoi installare il file ant-antlr3.jar nella directory utente Ant: ~/.ant/lib
.Controllare con ant -diagnostics
se ant-antlr3.jar è visibile ad Ant, come spiegato in quest'altro post.
Se stai utilizzando Eclipse, dovrai riavviare l'IDE prima che riconosca la nuova attività e dovrai anche includere antlr3.jar
E stringtemplate.jar
nel tuo percorso di classe (ma ant-antlr3.jar
non è necessario).