2008-10-23 4 views
7

मैं प्रोजेक्ट में उपयोग के लिए कुछ जावास्क्रिप्ट को .class बाइटकोड फ़ाइलों को संकलित करने के लिए Rhino JavaScript कंपाइलर का उपयोग करना चाहता हूं। ऐसा लगता है कि यह पहले से मौजूद होना चाहिए, क्योंकि क्रमशः ग्रोवी, नेटरेक्स (!) और ज्योथन के लिए ग्रोवियक, नेटरेक्ससी, और ज्योथॉन कार्य हैं। क्या किसी ने इस तरह के चींटी कार्य का उपयोग किया है या लिखा है, या कोई भी लिखने के बारे में कुछ सुझाव दे सकता है?क्या किसी ने जावा बाइटकोड में संकलन (राइनो) जावास्क्रिप्ट को संकलित करने के लिए किसी चींटी कार्य का उपयोग या लिखा है?

आदर्श रूप से जावास्क्रिप्ट या जावा कक्षाओं के बीच निर्भरताओं को हल करने का कोई तरीका होगा।

उत्तर

5

क्यों जावा कार्य का उपयोग नहीं करते?

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

कोई आपत्तियां?

+0

हम्म, मुख्य चिंता जावा और जावास्क्रिप्ट कक्षाओं के बीच निर्भरताओं को संभालने में है। फिर भी, यह अभी काम करने के लिए पर्याप्त हो सकता है - धन्यवाद। –

5

यहां एक नमूना build.xml है जो मैं अपने गैंडो अनुप्रयोगों के लिए उपयोग करता हूं। आप जावास्क्रिप्ट फ़ाइलों के बहुत सारे है, तो आप सिर्फ अधिक टैग
जोड़ने रखने की जरूरत है ~: चींटी संकलन जार रन

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

~

6

मैं अपने प्रोजेक्ट है, जो एक स्क्रिप्ट है कि निशान भी शामिल है में RequireJS उपयोग कर रहा हूँ मॉड्यूल के बीच निर्भरता, और उन्हें एक ही जावास्क्रिप्ट फ़ाइल में जोड़ती है। वैकल्पिक रूप से, यह संयुक्त क्लोजर कंपाइलर के साथ संयुक्त जेएस फ़ाइल को भी कम कर सकता है। एक बार यह इस रूप में है, जहां सभी निर्भरताओं को एक जेएस फ़ाइल में शामिल किया गया है, फ़ाइल को आसानी से जेएससी का उपयोग करके संकलित किया जा सकता है।

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

पूरा निर्माण स्क्रिप्ट पाया जा सकता है:

यहाँ मेरी चींटी स्क्रिप्ट का एक खंड जो मैं, एक संयुक्त js फ़ाइल बनाने के एक वर्ग फाइल करने के लिए यह संकलन, और फिर एक निष्पादन योग्य जार बनाने के लिए उपयोग है here

संबंधित मुद्दे

 संबंधित मुद्दे