读书人

编纂流程脚本build.xml

发布时间: 2012-12-17 09:31:40 作者: rapoo

编写流程脚本build.xml

Ant 是 Apache 软件基金会的一个子项目,它有以下的优点:
1、跨平台性,纯 Java 语言编写,有很好的跨平台支持;
2、操作简单,Ant 是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(默认为build.xml);
3、易维护, Ant 构建文件使用 XML 格式的文件,通过调用 target 树执行各种 task ,每个 task 实现了特定接口对象(也可以理解为实现各种功能),结构清晰,易维护。

?

Ant 可以集成到开发环境中,由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去。

?

开工:

这段内容摘自http://shawnqiu.iteye.com/blog/712284? 测试用的内容,在此扩展下,也感谢

qiuxiaorong1979 童鞋的整理,不过格式编写格式还要加强哦:)?对于path的学习可以参考http://kouriba.iteye.com/blog/1629839童鞋的文章。?中间穿插有我标记的说明及注意事项(标记是红色的,保存后变了,我的标记之前是八个空格)。有些内容格式的使用是多样的,这里只有一种格式,不一定是常用的,但是可以作参考之用。

?

<?xml version="1.0"?><project name="NES" default="doc">        --project 最外层节点,name可自起,default指默认运行哪一个target.一般写最后一个,最后一个再依赖前面的,如此循环执行所有的任务。    <property name="NES.home" value="." />        --全局常量,自定义,name命名可以使用“.”隔开,如upgrade.login.name等   <!-- 源jsp文件地址 -->    <property name="jsp.dir" value="${NES.home}/WebRoot" />    <!-- 源java文件地址 -->    <property name="java.dir" value="${NES.home}/src" />    <!-- 最终发布文件地址 -->    <property name="dist.dir" value="${NES.home}/dist" />    <!-- 最终class文件地址 -->    <property name="classes.dir" value="${NES.home}/dist/WEB-INF/classes" />    <!-- 最终jar文件地址 -->    <property name="jar.dir" value="${NES.home}/jar" />    <property name="lib.dir" value="lib" />    <property name="dist.dir" value="dist" />    <property name="doc.dir" value="doc"/>    <!-- 定义classpath -->    <path id="master-classpath">        --如上所述        <fileset file="${NES.home}/WebRoot/WEB-INF/lib/*.jar" />        <pathelement path="${classes.dir}"/>    </path>    <!-- 初始化 -->        --任务 01  可参考http://taink.iteye.com/blog/504034  童鞋的文章,一般任务编写都是从上到下按顺序创建任务的   <target name="init">      <delete dir="${jar.dir}"/>      <delete dir="${dist.dir}"/>      <mkdir dir="${jar.dir}" />      <mkdir dir="${dist.dir}" />      <mkdir dir="${classes.dir}" />    </target>    <!-- 编译 -->        --任务 02  depends指依赖int任务,应该不用多说了吧    <target name="compile" depends="init" description="compile the source files">        <javac srcdir="${java.dir}" destdir="${classes.dir}" target="1.6" includeantruntime="on" >        --srcdir:包含源文件的路径。destdir:编译后文件存放的目标文件夹,默认是当前文件夹。 target:指定Java 虚拟机版本。includeantruntime:是否应在类路径中包括 Ant 运行时程序库。可参考http://zhaohaolin.iteye.com/blog/971131              <compilerarg line="-encoding UTF-8" />            <classpath refid="master-classpath" />        </javac>    </target>    <!-- 测试 -->        --任务  03      <target name="test" depends="compile" description="run junit test">    </target>    <!-- 打包 -->        --任务  04      <target name="pack" depends="test" description="make .jar file">        <copy todir="${dist.dir}/WEB-INF/classes" preservelastmodified="true">        --copy可对文件或目录复制,fileset可指定copy哪些文件或目录            <fileset dir="${java.dir}" >                <include name="**/**"/>                <include name="**.**"/>                <exclude name="com/**"/>            </fileset>        </copy>        <copy todir="${dist.dir}" preservelastmodified="true">            <fileset dir="${jsp.dir}" >                <include name="**/**"/>                <include name="**.**"/>                <exclude name="classes/**"/>            </fileset>        </copy>        <jar destfile="${jar.dir}/nes.jar" basedir="${dist.dir}" />    </target>    <!-- 文档 -->        --任务  05      <target name="doc" depends="pack" description="create api doc">    </target></project>

?

?扩展几个标签:

1、target下使用<echo></echo>可在打印自己想到表达或注释的内容。

2、target下使用<telnet></telnet>可登录远程服务器,如

???????<telnet server="${server.ip}">??????? --read读取属性,write输入信息。
??????????? <read>ogin:</read>
??????????? <write>${server.login.name}</write>
??????????? <read>assword:</read>
??????????? <write>${server.login.pwd}</write>

??????????? <read>${prompt_end}</read>??????? --$:服务器上的标示符号
??????????? <write>rm -rf ${server.build.dir}</write>

????????????<read>${prompt_end}</read>
??????? </telnet>

3、target下使用<ftp></ftp>可远程传输文件。如

??? <ftp server="${server.ip}" binary="true"
??? ????? remotedir="${home.dir}/${server.build.dir}"
??? ????? userid="${server.login.name}"
??? ????? password="${server.login.pwd}" depends="false">
??? ????? <fileset dir="${before_package_path}">
??? ???????? <include name="*.tar.gz"/>
??? ????? </fileset>
??? ?</ftp>

4、target下使用<sleep seconds="5"/>可以暂停5秒。

5、target下使用<exec></exec>可以执行命令。

???? <exec dir="${jar.antfile.path}" executable="${jar.antfile.path}/build.bat"></exec>

6、

读书人网 >XML SOAP

热点推荐