7

プロジェクトで使用するために、 Rhino JavaScriptコンパイラを使用して JavaScript を .class バイトコード ファイルにコンパイルしたいと考えています。Groovy、NetREXX(!)、および Jython には、それぞれ groovyc、netrexxc、および jythonc タスクがあるため、これは既に存在するはずです。誰かがそのような Ant タスクを使用または作成したことがありますか? または、その作成方法に関するヒントを提供できる人はいますか?

理想的には、JavaScript または Java クラス間の依存関係を解決する何らかの方法が必要です。

4

3 に答える 3

6

私は自分のプロジェクトでRequireJSを使用しています。これには、モジュール間の依存関係を追跡し、それらを 1 つの JavaScript ファイルに結合するスクリプトが含まれています。オプションで、結合された js ファイルを Google Closure コンパイラで縮小することもできます。すべての依存関係が 1 つの js ファイルに含まれるこの形式になると、そのファイルは jsc を使用して簡単にコンパイルできます。

これは、1 つの結合された js ファイルを作成し、それをクラス ファイルにコンパイルしてから、実行可能な JAR を作成するために使用する私の ant スクリプトの一部です。

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

完全なビルド スクリプトは、ここにあります。

于 2010-08-25T15:14:21.467 に答える
5

以下は、私が rhino アプリケーションに使用する build.xml のサンプルです。たくさんの JavaScript ファイルがある場合は、タグを追加し続ける必要があります
~: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>

于 2009-07-16T21:26:19.333 に答える
5

単純にJavaタスクを使用しないのはなぜですか?

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

異議はありますか?

于 2008-10-23T22:15:24.723 に答える