2011-08-14 14 views
6

में क्लासपाथ जार को एक जार में कैसे शामिल करें I स्विंगक्स, वसंत का उपयोग करके और उन्हें बनाने के लिए चींटी का उपयोग करके डेस्कटॉप एप्लिकेशन विकसित कर रहा हूं। यह चींटी में मेरी पहली परियोजना है। एंटी द्वारा एक्जिक्यूटिव जार बिल्ड में क्लासपाथ जार कैसे जोड़ सकते हैं? मेरे स्विंगक्स, स्प्रिंग जार मेरे क्लासपाथ में है। जार के लिए यह मेरा लक्ष्य:एंटी

<target name="jar"> 
    <mkdir dir="build/jar" /> 
    <jar destfile="build/jar/MainClass.jar" basedir="build/classes"> 
     <manifest> 
      <attribute name="Main-Class" value="MainClass" /> 
     </manifest>   
    </jar> 
</target> 

संपादित करें:

<project name="Number"> 
    <description> 
      description 
    </description> 

    <property name="lib" value="lib" /> 
    <property name="src" value="src" /> 
    <property name="build" value="build" /> 
    <property name="classes" value="classes" /> 
    <property name="jar" value="jar"/> 

    <target name="clean"> 
     <delete dir="${build}" /> 
    </target> 

    <path id="classpath"> 
     <fileset dir="${lib}" includes="**/*.jar" /> 
    </path> 

    <target name="compile"> 
     <mkdir dir="${build}/${classes}" /> 
     <javac srcdir="${src}" destdir="${build}/${classes}" classpathref="classpath" /> 
    </target> 

    <target name="jar" depends="clean, compile"> 
     <mkdir dir="${build}/${jar}" /> 
     <jar destfile="build/jar/Number.jar" basedir="${build}/${classes}"> 
      <manifest> 
       <attribute name="Main-Class" value="MainClass" /> 
      </manifest> 
      <fileset file="test.txt"> 
      </fileset> 
     </jar> 
    </target> 

    <target name="run"> 
     <java jar="${build}/${jar}/MainClass.jar" fork="true" /> 
    </target> 
</project> 

उत्तर

18

आप उन्हें निम्न कोड के साथ जोड़ सकते हैं:

<target name="compile"> 
    <mkdir dir="${classes.dir}"/> 
    <javac srcdir="${src.dir}" destdir="${classes.dir}"> 
     <classpath> 
       <fileset dir="${lib}"> 
        <include name="**/*.jar" /> 
       </fileset> 
     </classpath> 
    </javac> 
</target> 

<target name="jar" depends="compile"> 
    <mkdir dir="${jar.dir}"/> 
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}"> 
     <manifest> 
      <attribute name="Main-Class" value="${main-class}"/> 
     </manifest> 
     <zipgroupfileset dir="${lib}" includes="**/*.jar"/> 
    </jar> 

</target> 

यह सब * .jar फ़ाइलें जो किया जा रहा है को शामिल किया जाएगा $ {lib} फ़ोल्डर।

लेकिन यह कोड एंटी संकलित लक्ष्य में होना चाहिए। क्योंकि जार बंडल उत्पन्न करने से पहले आपको इसे संकलित करने की आवश्यकता है। और इसलिए आपको स्विंगक्स, वसंत जार की जरूरत है।

+0

इसे नोड के अंदर कहां रखा जाए? –

+0

मैंने अब आपको एक संकलन लक्ष्य के साथ कोड दिया है। महत्वपूर्ण यह है कि जार लक्ष्य संकलन के आधार पर है और आप जार के साथ कक्षा पथ को संभालते हैं। आशा है कि अब यह स्पष्ट है :)। मूल चींटी संरचना के लिए इस ट्यूटोरियल की जांच करें: http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html – Prine

+1

मैंने पहले उस ट्यूटोरियल को पढ़ा और जैसा कि मेरे संपादन में दिखाया गया था। लेकिन स्विंगक्स जार नंबर.जर में नहीं जोड़ा गया है और यही कारण है कि मेरा कोड काम नहीं कर रहा है, लॉन्च करने में विफल रहा है। –