清单三:
<?xml version="1.0"?> <project name="Panel" default="all"> <target name="setProps" unless="setProps"> <property name="outdir" value="/tmp/app/"/> </target> <target name="init" depends="setProps"> <tstamp/> <property name="local_outdir" value="${outdir}/panel"/> <property name="build" value="${local_outdir}/classes"/> <property name="lib" value="${outdir}/lib"/> <property name="panel_jar" value="${lib}/panel.jar"/> </target> <target name="clean" depends="init"> <delete dir="${local_outdir}"/> <delete file="${panel_jar}"/> </target> <target name="prepare" depends="init"> <mkdir dir="${build}"/> <mkdir dir="${lib}"/> </target> <target name="compile" depends="prepare"> <javac srcdir="./src" destdir="${build}"/> </target> <target name="package" depends="compile"> <jar jarfile="${panel_jar}" basedir="${build}"/> </target> <target name="all" depends="clean,package"/> </project> |
其中目标all为默认目标(default="all"),所以该构件文件中的所有目标都会被执行。因为目标all依赖于clean和package。clean依赖于init,init依赖于setprops。package依赖于compile,compile依赖于prepare,prepare依赖于init。
当然如果使用的同一文字在两次以上,那么就应该在init目标中定义它。
<property name="local_outdir" value="${outdir}/panel"/> <property name="build" value="${local_outdir}/classes"/> |
你可以看到在定义local_outdir的值中就使用了${outdir}。它代表local_outdir=/tmp/app/panel。 build的值中使用了${local_outdir}。它代表build=/tmp/app/panel/classes。
好了你可以在Panel目录中在命令行运行ant了,看看是否在G:/tmp/app/lib目录下有HelloWorldPanel.jar。
同样在Frame和Main目录中编写象上面那样的各自的构件文件(清单四)。当然了,HelloWorldMain依赖于HelloWorldFrame,HelloWorldFrame依赖于HelloWorldPanel,所以要在其各自的Main-INF中编写各自的清单文件(清单五)。
清单四:
<!—Frameàbuild.xml--> <?xml version="1.0"?> <project name="Frame" default="all"> <target name="setProps" unless="setProps"> <property name="outdir" value="/tmp/app/"/> </target> <target name="init" depends="setProps"> <tstamp/> <property name="local_outdir" value="${outdir}/frame"/> <property name="build" value="${local_outdir}/classes"/> <property name="lib" value="${outdir}/lib"/> <property name="frame_jar" value="${lib}/frame.jar"/> </target> <target name="clean" depends="init"> <delete dir="${build}"/> <delete file="${frame_jar}"/> </target> <target name="prepare" depends="init"> <mkdir dir="${build}"/> <mkdir dir="${lib}"/> </target> <target name="compile" depends="prepare"> <javac srcdir="./src" destdir="${build}"> <classpath> <fileset dir="${lib}"> <include name="**/*.jar"/> </fileset> </classpath> </javac> </target> <target name="package" depends="compile"> <jar jarfile="${frame_jar}" manifest="./META-INF/MANIFEST.MF" basedir="${build}"/> </target> <target name="all" depends="clean,package"/> </project>
<!—Mainàbuild.xml--> <?xml version="1.0"?> <project name="application" default="all"> <target name="setProps" unless="setProps"> <property name="outdir" value="/tmp/app/"/> </target> <target name="init"> <tstamp/> <property name="local_outdir" value="${outdir}/java_app"/> <property name="build" value="${local_outdir}/classes"/> <property name="lib" value="${outdir}/lib"/> <property name="app_jar" value="${lib}/main.jar"/> </target> <target name="clean" depends="init"> <delete dir="${local_outdir}"/> <delete file="${app_jar}"/> </target> <target name="prepare" depends="init"> <mkdir dir="${build}"/> <mkdir dir="${lib}"/> </target> <target name="compile" depends="prepare"> <javac srcdir="./src" destdir="${build}"> <classpath> <fileset dir="${lib}"> <include name="**/*.jar"/> </fileset> </classpath> </javac> </target> <target name="package" depends="compile"> <jar jarfile="${app_jar}" manifest="./META-INF/MANIFEST.MF" basedir="${build}"/> </target> <target name="all" depends="clean,package"/> </project> |