java javascript ant rhino

¿Alguien ha usado o escrito una tarea Ant para compilar(Rhino) código de JavaScript a Java?



(3)

Me gustaría utilizar el compilador de JavaScript de Rhino para compilar algunos archivos de JavaScript en .class bytecode para usar en un proyecto. Parece que esto ya debería existir, ya que hay tareas groovyc, netrexxc y jythonc para Groovy, NetREXX (!) Y Jython, respectivamente. ¿Alguien ha usado o escrito una tarea Ant, o alguien puede proporcionarle algunos consejos sobre cómo escribirla?

Idealmente, tendría alguna forma de resolver dependencias entre las clases de JavaScript o Java.


¿Por qué no simplemente usar la tarea de Java?

<java fork="yes" classpathref="build.path" classname="org.mozilla.javascript.tools.jsc.Main" failonerror="true"> <arg value="-debug"/> ... <arg value="file.js"/> </java>

¿Alguna objeción?


Aquí hay un ejemplo de build.xml que uso para mis aplicaciones rhino. Si tienes muchos archivos javascript, solo tienes que seguir agregando más etiquetas
~: ant compile jar run

<project> <target name="compile"> <mkdir dir="build/classes"/> <java fork="yes" classpath="js.jar" classname="org.mozilla.javascript.tools.jsc.Main" failonerror="true"> <arg value="-nosource"/> <arg value="-opt"/> <arg value="9"/> <arg value="-version"/> <arg value="170"/> <arg value="src/SwingApplication.js"/> </java> <move todir="build/classes"> <fileset dir="src"> <include name="**/*.class"/> </fileset> </move> </target> <target name="jar"> <mkdir dir="build/jar"/> <jar destfile="build/jar/SwingApplication.jar" basedir="build/classes"> <zipfileset src="js.jar" includes="**/*.class"/> <manifest> <attribute name="Main-Class" value="SwingApplication"/> </manifest> </jar> </target> <target name="run"> <exec executable="java"> <arg valUe="-jar"/> <arg value="build/jar/SwingApplication.jar"/> </exec> </target> </project>

~


Estoy usando RequireJS en mi proyecto, que incluye un script que rastrea las dependencias entre los módulos y los combina en un solo archivo JavaScript. Opcionalmente, también puede minimizar el archivo combinado js con el compilador Google Closure. Una vez que está en esta forma, donde todas las dependencias están incluidas en un solo archivo js, ​​el archivo se puede compilar fácilmente usando jsc.

Aquí hay un segmento de mi script ant que utilizo para crear el único archivo JS combinado, compilarlo en un archivo de clase y luego crear un JAR ejecutable:

<target name="compile-single-js"> <mkdir dir="${build-js}"/> <java classname="org.mozilla.javascript.tools.shell.Main"> <classpath> <path refid="rhino-classpath"/> <path refid="closure-classpath"/> </classpath> <arg value="${js-build-script}"/> <arg value="${js-build-dir}"/> <arg value="name=${build-js-main-rhino-frontend-module}"/> <arg value="out=${build-js-main}"/> <arg value="baseUrl=."/> <arg value="includeRequire=true"/> <arg value="inlineText=true"/> <arg value="optimize=none"/> </java> </target> <target name="compile-single-class" depends="compile-single-js"> <mkdir dir="${build-class}"/> <!-- TODO: set -opt --> <java classname="org.mozilla.javascript.tools.jsc.Main"> <classpath> <path refid="rhino-classpath"/> </classpath> <arg value="-o"/> <arg value="${build-class-main-name}.class"/> <arg value="${build-js-main}"/> </java> <move file="${build-js}/${build-class-main-name}.class" todir="${build-class}"/> </target> <target name="jar-single-class" depends="compile-single-class"> <mkdir dir="${build-jar}"/> <jar destfile="${build-jar-main}" basedir="${build-class}" includes="${build-class-main-name}.class"> <manifest> <attribute name="Main-Class" value="${build-class-main-name}" /> </manifest> </jar> </target>

El script completo de construcción se puede encontrar aquí .