¿Dónde consigo la tarea de Antlr Ant?
Pregunta
Estoy intentando llamar a una tarea de Antlr en mi build.xml de Ant de la siguiente manera:
<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>
Pero Ant no puede encontrar la definición de tarea. He puesto todo lo siguiente en ese dir.lib.build
:
- antlr-3.1.jar
- antlr-2.7.7.jar
- antlr-runtime-3.1.jar
- stringtemplate-3.2.jar
Pero ninguno de ellos parece tener la definición de tarea. (También he intentado colocar esos frascos en mi ruta de clase Ant; mismo problema.)
Solución
El tarro actual de tareas de Antlr está disponible en http: // www. antlr.org/share/1169924912745/antlr3-task.zip
Se puede encontrar en el sitio web antlr.org en la sección " Compartir archivos " partida.
Otros consejos
Deberías usar el jar antlrall.jar. Puede continuar y soltarlo en su instalación de Ant, pero eso significa que solo funcionará para esa instalación. Revisamos el archivo jar y usamos taskdef para cargar el archivo jar para que no se convierta en otro paso para los desarrolladores cuando inician el equipo o se mueven a una computadora nueva.
Acabo de hacer esto trabajando para mí mismo. Me tomó una hora ugh de todos modos,
Paso 1: descarga la tarea ant-antlr3 desde
http://www.antlr.org/share/1169924912745/antlr3- task.zip
Paso 2: copia a donde la hormiga pueda verlo. Mi mac:
sudo cp /usr/local/lib/ant-antlr3.jar / usr / share / ant / lib /
mi caja de linux:
sudo cp /tmp/ant-antlr3.jar /usr/local/apache-ant-1.8.1/lib/
Paso 3: asegúrese de que antlr2, antlr3, ST estén en classpath. Todo en uno está aquí:
http://antlr.org/download/antlr-3.3-complete.jar
Paso 4: usar en 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>
Acaba de agregar una entrada de preguntas frecuentes:
http://www.antlr.org/wiki/pages/ viewpage.action? pageId = 24805671
La forma más básica de ejecutar Antlr es ejecutar el JAR de Antlr:
<project default="antlr">
<target name="antlr">
<java jar="antlr-4.1-complete.jar" fork="true">
<arg value="grammar.g4"/>
</java>
</target>
</project>
Esto es un poco más lento, ya que divide la JVM y ejecuta Antlr incluso si la gramática no cambia. Pero funciona de la misma manera con todas las versiones de Antlr y no necesita ningún objetivo especial.
En Ubuntu, esto debería hacer que esté disponible:
sudo apt-get install ant-opcional
Información adicional sobre lo que todos los demás han contribuido hasta ahora:
El paquete ant-opcional
en Ubuntu incluye la tarea incluida con Ant 1.8.2, que es una tarea para ANTLR 2.7.2, por lo que fallará con un error como se describe en esta publicación . El método descrito por Terence es la mejor manera de usar la tarea ANTLR3.
Si no tiene acceso de root en una máquina con Linux, puede instalar el archivo ant-antlr3.jar en el directorio de usuarios de Ant: ~ / .ant / lib
. Verifique con ant-diagnósticos
si ant-antlr3.jar es visible para Ant, como se explica en en esta otra publicación .
Si está utilizando Eclipse, deberá reiniciar el IDE antes de que reconozca la nueva tarea y también deberá incluir antlr3.jar
y stringtemplate.jar
en su ruta de clase (pero ant-antlr3.jar
no es necesario).