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

votos
7

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.

Publicado el 23/10/2008 a las 20:11
por usuario
En otros idiomas...                            


3 respuestas

votos
5

¿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?

Respondida el 23/10/2008 a las 21:15
fuente por usuario

votos
5

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>

~

Respondida el 16/07/2009 a las 20:26
fuente por usuario

votos
6

Estoy usando RequireJS en mi proyecto, que incluye un script que traza las dependencias entre módulos, y los combina en un único archivo JavaScript. Opcionalmente, también puede minify el archivo js combinado con el compilador Cierre Google. Una vez que está en esta forma, en todas las dependencias se incluyen en un único archivo JS, el archivo se puede compilar fácilmente usando JSC.

Aquí hay un segmento de mi guión de hormigas que utilizo para crear el archivo js combinada única, compilar en un archivo de clase, y luego crear un ejecutable JAR:

<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>

La escritura de la estructura completa se puede encontrar aquí .

Respondida el 25/08/2010 a las 14:14
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more