2011-08-14 61 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中,这就是为什么我的代码无法正常工作,无法启动。 –

相关问题