我用了两个文件,利用了继承关系,父XML build-compile.xml如下:
<project name="project" basedir="../../" default="all">
<tstamp prefix="build">
<format property="date" pattern="yyyyMMdd"/>
</tstamp>
<property name="module.dist.dir" value="${module.dir}/dist"/>
<property name="lib.dir" value ="dacx-thirdparty"/>
<property name="module.javasrc.dir" value="${module.dir}/javasrc"/>
<property name="module.business.dir" value="${module.javasrc.dir}/business"/>
<property name="module.web.dir" value="${module.javasrc.dir}/web"/>
<property name="module.impl.dir" value="${module.business.dir}/impl"/>
<property name="module.interface.dir" value="${module.business.dir}/interface"/>
<property name="module.entity.dir" value="${module.javasrc.dir}/ibatis"/>
<property name="module.dto.dir" value="${module.business.dir}/dto"/>
<property name="module.websrc.dir" value="${module.web.dir}"/>
<property name="module.util.dir" value="${module.javasrc.dir}/utils"/>
<path id="project.class.path">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="clear">
<delete dir="${module.dist.dir}/jars"/>
<delete dir="${module.dist.dir}/interface"/>
<delete dir="${module.dist.dir}/impl"/>
<delete dir="${module.dist.dir}/web"/>
<delete dir="${module.dist.dir}/dto"/>
<delete dir="${module.dist.dir}/entity"/>
</target>
<target name="init" depends="clear">
<mkdir dir="${module.dist.dir}/jars"/>
<mkdir dir="${module.dist.dir}/interface"/>
<mkdir dir="${module.dist.dir}/impl"/>
<mkdir dir="${module.dist.dir}/web"/>
<mkdir dir="${module.dist.dir}/dto"/>
<mkdir dir="${module.dist.dir}/entity"/>
</target>
<target name="entity_compile" depends="init">
<javac srcdir="${module.entity.dir}" source="1.5" description="将javasrc/ibatis目录下的类编译成class到dist/ibatis目录下,
在这个过程中,因为javasrc/ibatis依赖于很多jar包。所以这里将dacx-thirdparty所有的jar包都支持了进去。classpath指明了这些包的路径,还将dist下已经编译好了的jar也加进去了"
destdir="${module.dist.dir}/entity" debug="true" encoding="UTF-8" failonerror="false">
<classpath>
<fileset dir="${module.dist.dir}/jars">
<include name="*.jar"/>
</fileset>
</classpath>
<classpath refid="project.class.path"/>
</javac>
<jar destfile="${module.dist.dir}/jars/dacx-${module.name}-entity.jar">
<zipfileset dir="${module.dist.dir}/entity">
<include name="**/*.class"/>
<include name="**/*.xml"/>
<include name="**/*.properties"/>
</zipfileset>
<zipfileset dir="${module.entity.dir}">
<include name="**/*.xml"/>
<include name="**/*.properties"/>
</zipfileset>
</jar>
</target>
<target name="dto_compile" >
<javac srcdir="${module.dto.dir}" source="1.5"
destdir="${module.dist.dir}/dto" debug="true" encoding="UTF-8" failonerror="false">
<classpath>
<fileset dir="${module.dist.dir}/jars">
<include name="*.jar"/>
</fileset>
</classpath>
<classpath refid="project.class.path"/>
</javac>
<jar destfile="${module.dist.dir}/jars/dacx-${module.name}-dto.jar">
<zipfileset dir="${module.dist.dir}/dto">
<include name="**/*.class"/>
<include name="**/*.properties"/>
</zipfileset>
<zipfileset dir="${module.dto.dir}">
<include name="**/*.properties"/>
</zipfileset>
</jar>
</target>
<target name="interface_compile" >
<javac
srcdir="${module.util.dir}:
${module.interface.dir}"
source="1.5" destdir="${module.dist.dir}/interface" debug="true"
encoding="UTF-8" failonerror="false">
<classpath>
<fileset dir="${module.dist.dir}/jars">
<include name="*.jar"/>
</fileset>
</classpath>
<classpath refid="project.class.path"/>
</javac>
<jar
destfile="${module.dist.dir}/jars/dacx-${module.name}-interface.jar">
<zipfileset dir="${module.dist.dir}/interface">
<include name="**/*.class"/>
<include name="**/*.dtd"/>
<include name="**/*.properties"/>
</zipfileset>
<zipfileset dir="${module.util.dir}">
<include name="**/*.dtd"/>
<include name="**/*.properties"/>
</zipfileset>
<zipfileset dir="${module.interface.dir}">
<include name="**/*.dtd"/>
<include name="**/*.properties"/>
</zipfileset>
</jar>
</target>
<target name="impl_compile" >
<javac srcdir="${module.util.dir}:${module.impl.dir}" source="1.5"
destdir="${module.dist.dir}/impl" debug="true" encoding="UTF-8"
failonerror="false">
<classpath>
<fileset dir="${module.dist.dir}/jars">
<include name="*.jar"/>
</fileset>
</classpath>
<classpath refid="project.class.path"/>
</javac>
<jar destfile="${module.dist.dir}/jars/dacx-${module.name}-impl.jar">
<zipfileset dir="${module.dist.dir}/impl">
<include name="**/*.class"/>
<include name="**/*.dtd"/>
<include name="**/*.properties"/>
<include name="**/*.bsh"/>
</zipfileset>
<zipfileset dir="${module.impl.dir}">
<include name="**/*.dtd"/>
<include name="**/*.properties"/>
<include name="**/*.bsh"/>
</zipfileset>
</jar>
</target>
<target name="web_compile" >
<javac srcdir="${module.websrc.dir}" source="1.5"
destdir="${module.dist.dir}/web" debug="true" encoding="UTF-8"
failonerror="false">
<classpath>
<fileset dir="${module.dist.dir}/jars">
<include name="*.jar"/>
</fileset>
</classpath>
<classpath refid="project.class.path"/>
</javac>
<jar destfile="${module.dist.dir}/jars/dacx-${module.name}-web.jar">
<zipfileset dir="${module.dist.dir}/web">
<include name="**/*.class"/>
<include name="**/*.properties" />
</zipfileset>
</jar>
</target>
<target name="all"
depends="entity_compile,dto_compile,interface_compile,impl_compile,web_compile"/>
</project>
子文件如下:
<project name="dacx" basedir="../" default="all">
<tstamp prefix="build">
<format property="date" pattern="yyyyMMdd"/>
</tstamp>
<property file="script/build.properties" description="加载引用的属性文件" />
<path id="project.class.path" description="提供需要用到的包的地址:lib.dir =../dacx-thirdparty">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
<exclude name="bo-lib/*.jar"></exclude>
</fileset>
</path>
<target name="clear" description="删除编译了的文件:dacx下的dist目录下的文件,包括编译好了的class文件和jar文件">
<ant antfile="${build.template.dir}/build-compile.xml" target="clear" inheritall="false">
<property name="module.name" value="${module.name}"/>
<property name="module.dir" value="${module.dir}"/>
</ant>
</target>
<target name="init" description="在dacx下创立dist文件夹">
<ant antfile="${build.template.dir}/build-compile.xml" target="init" inheritall="false">
<property name="module.name" value="${module.name}"/>
<property name="module.dir" value="${module.dir}"/>
</ant>
</target>
<!--entity_compile-->
<target name="entity_compile" depends="init" description="将javasrc/ibaits目录下的类编译成calss放到/dist/entity目录下">
<ant antfile="${build.template.dir}/build-compile.xml" target="entity_compile" inheritall="false">
<property name="module.name" value="${module.name}"/>
<property name="module.dir" value="${module.dir}"/>
</ant>
</target>
<target name="dto_compile" depends="entity_compile">
<ant antfile="${build.template.dir}/build-compile.xml" target="dto_compile" inheritall="false">
<property name="module.name" value="${module.name}"/>
<property name="module.dir" value="${module.dir}"/>
</ant>
</target>
<!--interface_compile-->
<target name="interface_compile" >
<ant antfile="${build.template.dir}/build-compile.xml" target="interface_compile" inheritall="false">
<property name="module.name" value="${module.name}"/>
<property name="module.dir" value="${module.dir}"/>
</ant>
</target>
<!--impl_compile�-->
<target name="impl_compile">
<ant antfile="${build.template.dir}/build-compile.xml" target="impl_compile" inheritall="false">
<property name="module.name" value="${module.name}"/>
<property name="module.dir" value="${module.dir}"/>
</ant>
</target>
<!--web_compile-->
<target name="web_compile" >
<ant antfile="${build.template.dir}/build-compile.xml" target="web_compile" inheritall="false">
<property name="module.name" value="${module.name}"/>
<property name="module.dir" value="${module.dir}"/>
</ant>
</target>
<target name="copy-dist">
<ant antfile="${build.template.dir}/build-deploy.xml" target="copy-dist" inheritall="false">
<property name="module.name" value="${module.name}"/>
<property name="module.dir" value="${module.dir}"/>
</ant>
</target>
<!--all_compile-->
<target name="all_compile" depends="clear,init,entity_compile,dto_compile,
interface_compile,impl_compile,web_compile"/>
<target name="all" depends="all_compile,copy-dist"/>
</project>
属性文件
module.name =dacx
module.dir=${module.name}
module.javasrc.dir=javasrc
module.business.dir=${module.javasrc.dir}/business
module.web.dir=${module.javasrc.dir}/web
module.impl.dir=${module.business.dir}/impl
module.interface.dir=${module.business.dir}/interface
module.entity.dir=${module.javasrc.dir}/ibatis
module.dto.dir=${module.business.dir}/dto
module.util.dir=${module.javasrc.dir}/utils
webapp.dir=rhm-dacx
webapp.lib.dir=WEB-INF
module.dist.dir=dist
module.config.dir=config
lib.dir =../dacx-thirdparty
build.template.dir=${lib.dir}/build-module