estoy usando RequireJS en mi proyecto, que incluye un script que traza fuera de las dependencias entre los módulos, y los combina en un solo archivo de 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 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 here.
Hmm, la principal preocupación es manejar las dependencias entre las clases de Java y JavaScript. Aún así, esto podría ser suficiente para trabajar por ahora, gracias. –