由于项目中有用到公司自己封装的SDK,那么如果有新的开发人员,可以利用Ant来生成项目的基本架构,这样可以让新人迅速的熟悉项目的基本开发流程。
这篇文章的话,主要来演示一下,怎么利用Ant将一个初步的项目模版生成。
首先,我们来看一下这个Demo的目录结构:
Template目录里面存放着java文件(包名/类名.java)
其中包名和类名都是一个$符号包围的字符串,这些主要是取决你要生成什么名字的项目
现在,再来看看$IVAN_CLASS$.java里面的代码:
package $IVAN_PACKAGE$;
public class $IVAN_CLASS$
{
……………………
}
里面的代码,也是再项目生成后,会替换成相应的名字.
现在,外面在Template的同级目录下面,建立我们的ant脚本: build.xml
<?xml version="1.0" encoding="UTF-8"?> <project name="GenFileByTemplate" basedir="." default="generFile"> <!-- 接受用户输入 --> <target name="input-args" depends="" description="接受包名输入"> <echo message="================="/> <echo message="====开始生成文件====="/> <echo message="================="/> <!-- 包名设置 --> <input addproperty="package" message="请输入包名:"/> <condition property="p_name" value="${package}"> <not> <equals arg1="${package}" arg2="" trim="true"/> </not> </condition> <fail unless="p_name" message="包名不能为空^o^"/> <!-- 类名设置 --> <input addproperty="classname" message="请输入类名:"/> <condition property="c_name" value="${classname}"> <not> <equals arg1="${classname}" arg2="" trim="true"/> </not> </condition> <fail unless="c_name" message="类名不能为空^o^"/> </target> <target name="generFile" depends="input-args" description="根据模版生成文件"> <filterset id="filterfile" begintoken="$" endtoken="$"> <filter token="IVAN_PACKAGE" value="${package}"/> <filter token="IVAN_CLASS" value="${classname}"/> </filterset> <!-- 创建目的目录 --> <mkdir dir="./dist"/> <!-- 从一个目录拷贝至另外一个目录 --> <!--执行到这里,会将$IVAN_CLASS$.java文件里面的代码改掉$--> <copy todir="./dist" overwrite="true"> <fileset dir="./template"> <include name="$IVAN_PACKAGE$/*.java"/> </fileset> <filterset refid="filterfile"/> </copy> <!-- 一下会将文件名跟目录名改掉 --> <move file="./dist/$IVAN_PACKAGE$/$IVAN_CLASS$.java" tofile="./dist/${package}/${classname}.java"/> <delete dir="./dist/$IVAN_PACKAGE$"/> </target> </project>
这里,我在脚本里面有了详细的注释,如果我们执行ant ,则可以像项目模版的生成(like appfuse 的生成功能).
这里截图来看
当前的目录结构:
下面我们来执行脚本,这里会要求你输入你的包名和类名,这个DEMO的包名只是象征性的输入了一个单词
(有可能会输入像,com.xx.xx ,如此的话,就必须产生多级目录,这里只是做演示,则没处理,有兴趣的朋友,可以自己尝试下):
OK,现在我们再来看目录结构(会产生一个dist目录, 下面有模版中的文件,但是名字都变成你输入的包名和类名了):
OK, 这样我们就把项目结构生成出来了,而且还是根据我们输入的参数来产生相应的包和类的。
那么我们java文件的代码是否也同时更改了呢? 让我们来看看java文件的代码:
自此,这个DEMO已经完成。 大家对ANT有兴趣的,可以去apache上了解相关的内容。欢迎大家对本文拍拍砖。