Hat jemand eine Ant-Task zu kompilieren (Rhino) JavaScript Java-Bytecode verwendet oder geschrieben?

StackOverflow https://stackoverflow.com/questions/231550

  •  04-07-2019
  •  | 
  •  

Frage

würde Ich mag die Rhino JavaScript Compiler verwenden, um einige JavaScript zu kompilieren, um .class Bytecode-Dateien für die Verwendung in einem Projekt. Es scheint, wie dies sollte bereits vorhanden sein, da es groovyc, netrexxc und jythonc Aufgaben für Groovy, NetRexx (!) Und Jython, respectively. Hat jemand verwendet oder eine solche Ant-Task geschrieben, oder kann ein paar Tipps geben, wie jemand zu schreiben?

Im Idealfall wäre es eine Möglichkeit hat Abhängigkeiten zwischen JavaScript oder Java-Klassen zu lösen.

War es hilfreich?

Lösung

Warum nicht einfach Java-Aufgabe verwenden?

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

Einwände?

Andere Tipps

Ich bin mit RequireJS in meinem Projekt, das ein Skript enthält, die Abhängigkeiten zwischen den Modulen Spuren aus und kombiniert sie in eine einzige JavaScript-Datei. Optional kann es auch die kombinierte js Datei mit dem Google Closure Compiler minify. Sobald es in dieser Form ist, in der alle Abhängigkeiten in einer einzigen js-Datei enthalten sind, kann die Datei einfach mit jsc kompiliert werden.

Hier ist ein Teil meines Ant-Skript, das ich verwenden, um die einzelnen kombinierten js-Datei zu erstellen, kompilieren es zu einer Klassendatei, und dann eine ausführbare JAR erstellen:

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

Der komplette Build-Skript finden Sie hier .

Hier ist ein Beispiel build.xml ich für meine Nashorn-Anwendungen verwenden. Wenn Sie viele JavaScript-Dateien haben Sie brauchen nur zu halten weitere Tags hinzugefügt
~: Ant Kompilierung 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>

~

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top