这里介绍的是下一篇文章《Amoeba源代码导入eclipse的方法》的基础,所以这里涉及的不是ant的全面的知识,而只是下篇文章要用到的ant的知识。
1.Amoeba工程是用Ant发布的,这也是众多的开源工程所选择的源码发布方式。这种工程的最重要的一个文件是build.xml文件。里面就是Ant的详细过程。
2.build文件中的target指的是一段可以独立执行的ant指令的集合,在amoeba的build文件中经常出现。target有个depends属性,这个属性表示这个target的依赖target,被依赖的target会在调用依赖的target执行执行;
3.property标签定义的是一些变量,这个没有什么复杂的;
4.下面是一个较简单的Ant文件(Amoeba的mysql的build文件):
<?xml version="1.0" encoding="GB2312"?> //这是千篇一律
<project default="dist" name="amoeba-mysql" basedir=".">//工程名是amoeba-mysql,默认执行的target是dist,根目录是当前目录
<property name="version" value="2.1.0-RC5"/>//定义变量version,值为2.1.0.RC5
<property name="app.name" value="amoeba-mysql"/>//定义变量app.name,值为amoeba-mysql
<property name="deploy.dir" value="dist"/>//定义变量deploy.dir,值为dist
<property name="savedoc.dir" value="docs"/>//定义变量savedoc.dir,值为docs
<property name="javadoc.home" value="${deploy.dir}/document"/>//定义变量javadoc.home,值为dist/document
<property name="classes.dir" value="${deploy.dir}/classes"/>//同上
<property file="${basedir}/build.properties" />//文件位置,存放了其他的相关的变量,和上述变量一样
<path id="classpath">//定义文件路径
<pathelement location="${classes.dir}"/>
<fileset dir="${libs.dir}" includes="**/*.jar"/>//文件列表,这里表示所有的jar文件
<fileset dir="${project.libs.dir}" includes="**/*.jar"/>
</path>
<target name="compile" depends="prepare">//定义名为compile的target。它依赖名为prepare的target。
<javac srcdir="src/java" destdir="${classes.dir}" encoding="GBK" includeAntRuntime="false"
debug="on" optimize="{$build.optimize}" deprecation="on"
source="1.5" target="1.5">//编译src/jave文件下面的源代码,输出到
${classes.dir}中,即dist/classes
<classpath refid="classpath"/>//引用其他路径
<!-- <compilerarg value="-Xlint:unchecked"/> -->
</javac>
<javac srcdir="src/java.test" destdir="${classes.dir}" encoding="GBK" includeAntRuntime="false " debug="on" optimize="{$build.optimize}" deprecation="on" source="1.5" target="1.5"> <classpath refid="classpath"/>
</javac>
</target> <!-- common clean tasks --> <target name="distclean">//新建名为distclean的target
<delete dir="${deploy.dir}"/>//删除dist文件夹
</target>
<target name="prepare">//新建名为prepare的target
<mkdir dir="${deploy.dir}"/>//新建一个目录
<mkdir dir="${deploy.dir}/classes"/><copy todir="${classes.dir}">
<fileset dir="src/java" >
<exclude name="*/.svn/*"/>
<exclude name="**/*.java"/>
</fileset></copy> </target>
<target name="dist" depends="compile">//新建名为dist的target,它依赖名为compile的target <mkdir dir="${deploy.dir}"/>
<echo>${classes.dir}</echo>
<jar destfile="${deploy.dir}/${app.name}-${version}.jar" index="true">
<fileset dir="${classes.dir}" casesensitive="yes">
<exclude name="**/test/*.class"/> </fileset>
</jar>
<jar destfile="${deploy.dir}/${app.name}-test-${version}.jar" index="true">
<fileset dir="${classes.dir}" casesensitive="yes">
<include name="**/test/**/*"/> </fileset>
</jar>
</target>
<target name="server" description="Amoeba for Mysql" depends="compile">
<java classname="com.meidusa.amoeba.mysql.server.MysqlProxyServer" fork="true" maxmemory="128m">
<sysproperty key="amoeba.home" value="${basedir}"/>
<classpath>
<fileset dir="${libs.dir}">
<include name="**/*.jar"/>
<include name="classes"/>
<exclude name="amoeba-*.jar"/>
</fileset>
<pathelement path="target/classes"/>
</classpath>
</java>
</target>
</project>
(不知道为什么上面的代码就是不能放在一个灰色框中!)
以上的amoeba要用到的ant的最基础的知识,当然一些关于ant的介绍性的知识肯定还是需要的,这些知识请自行查阅吧!
推荐一本专门介绍ant的书籍:
林艺雄,《Ant开发及整合应用详解》,清华大学出版社,ISBN:978-7-302--15136-4