2011-08-14 106 views
6

我正在開發一個使用swingx,spring並使用ant構建它們的桌面應用程序。這是我在螞蟻的第一個項目。 如何將classpath jar添加到由ant構建的可執行jar文件中?我有swingx,彈簧jar進入我的classpath。這是我對jar目標:如何在Ant中包含classpath jar到jar中

<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}文件夾。

但是這個代碼應該是在螞蟻編譯的目標。因爲在生成jar包之前,你需要編譯它。因此你需要swingx,彈簧罐。

+0

哪裏把它放在節點? –

+0

我現在給你帶有編譯目標的代碼。重要的是,jar的目標是取決於編譯和你在那裏處理與jar的類路徑。希望現在很清楚:)。查看本教程以獲取基本的ant結構:http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html – Prine

+1

我首先閱讀了該教程,並按照我的編輯所示完成了該教程。但是swingx jar沒有添加到Number.jar中,這就是爲什麼我的代碼無法正常工作,無法啓動。 –

相關問題