Ant [Java]

来源:互联网 发布:路由器有mac地址吗 编辑:程序博客网 时间:2024/06/05 14:48

Example.peroperties

classes.dir=classes
lib.dir=lib
dist.dir=dist
doc.dir=doc


build.xml

<?xml version="1.0" encoding="UTF-8"?>


<project name="AntExample" default="practice" basedir=".">

<property name="src.dir" value="src"></property>
<!-- 读取文件中定义的属性  -->
<property file="example.properties"></property>

<path id="base.path">

<pathelement location="lib/"/>

<pathelement path="${java.class.path}/"/>

<pathelement path="${additional.path}"/>

</path>


<!-- 指定的属性是否存在 -->
<target name="targetA" if="ant.java.version">
<echo message="Java Version:${ant.java.version}" file="echoFile"></echo>
<!-- 将显示的信息写入file,是否以追加的方式append, 信息报告的级别info -->
<echo message="The basedir is ${basedir}" file="echoFile" append="true" level="info"></echo>
<echo message="The ant.file is ${ant.file}"></echo>
<echo message="The ant.version is ${ant.version}"></echo>
</target>


<!-- 依赖的目标,复制文件到文件夹、文件夹内容到文件夹 -->
<target name="practice" depends="targetA" description="practise ant examples">
<echo message="I'm practising Ant!"></echo>
<copy file="sourcefile" tofile="srcdir/srcfile"></copy>
<copy todir="todir">

<fileset dir="srcdir">

                                         <exclude name="**/*.java"/>

</fileset>

</copy>

                <copy todir="../backup/dir">

                        <fileset dir="src_dir"/>

                        文件名后加bak

                        <mapper type="glob" from="*"to="*.bak"/>

                </copy>

</target>

<!-- 删除文件夹、文件 -->
<target name="clean" description="delete all generated files">
<delete dir="${classes.dir}" failonerror="false"/>
<delete file="${dist.dir}/hello.jar"/>

<delete dir="${doc.dir}" failonerror="false"/>

               删除一组文件

                <delete>

                        <fileset dir="." includes="**/*.bak"/>

                </delete>

</target>

<target name="move">

<move todir="my/src/dir">

<fileset dir="my/src/dir">

<include name="**/*.jar"/>

<exclude name="**/*.bak"/>

</fileset>

<mapper type="glob" from="*"to="*.bak"/>

</move>

</target>


<!-- 编译-->

<target name="compile" depends="clean" description="compile the HelloWorld.java file">

                 <!-- Create the time stamp -->

                <tstamp/>

<mkdir dir="${classes.dir}"/>
<!-- includes被包含的java文件模式, excludes被排除的模式 -->
<javac srcdir="${src.dir}" destdir="${classes.dir}"  includes="mypackage/p1/**,mypackage/p2/**" excludes="mypackage/p1/testpackage/**" classpath="xxx.jar">

<!-- 类路径 classpath  -->

</javac>
</target>

<target name="run" depends="compile" description="run the HelloWorld.class file" >
<java classname="HelloWorld">

<classpath>

                                <path refid="base.path">

<pathelement path="${classes.dir}"/>

<!-- 要运行的Java Class的Jar文件名 -->

                                    <fileset dir="lib">

                                                 <include name="**/*.jar"/>

                                     </fileset>

                                     <pathelement location="classes"/>

</classpath>

</java>

</target>


        <!-- 打包-->

<target name="pack" depends="run" description="make .jar file">
<mkdir dir="${dist.dir}"/>

<jar destfile="${dist.dir}/hello.jar" basedir="${classes.dir}" includes="mypackage/test/**" excludes="**/Test.class" manifest=”my.mf” >

                <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jarfile -->

                <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar"basedir="${build}"/>     //yyyymmdd

                <jar jarfile="${dist}/lib/MyProject-${TSTAMP}.jar"basedir="${build}"/>     //hhmm

                <jar jarfile="${dist}/lib/MyProject-${TODAY}.jar"basedir="${build}"/>     //2003 年 12 月 17 日


配置 tstamp 任务来设置不同的属性,OFFSET_TIME 属性设置为距离当前时间 10 分钟之后的小时数、分钟数和秒数

<tstamp>

<format property="OFFSET_TIME"

pattern="HH:mm:ss"

offset="10" unit="minute"/>

</tstamp>


</jar>
</target>


<!-- 生成程序的api文档 -->
<target name="doc" depends="pack" description="create api doc">
<mkdir dir="${doc.dir}"/>
<javadoc destdir="${doc.dir}" author="true" version="true" use="true" windowtitle="HelloWorld API">
<!-- 源文件路径  -->
<sourcepath>
<pathelement path="${src.dir}"/>
</sourcepath>
<!-- 用户类路径 -->
<classpath>
<pathelement path="${classes.dir}"/>
</classpath>
<fileset dir="${src.dir}" defaultexcludes="yes">
</fileset>
<doctitle>
<![CDATA[<h1>Hello, test</h1>]]>
</doctitle>
<bottom>
<![CDATA[<i>All Rights Reserved.</i>]]>
</bottom>
</javadoc>
</target>


<!-- 发送邮件 -->
<target name="mail" description="mail something">
<mail mailhost="smtp.sina.com" user="xxxxxxx" password="xxxxxxxxx1" subject="Test build" charset="utf-8">
<from address="xxxxxxxxx@sina.com"/>
<to address="xxxxx@xxx.net.cn"/>
<message>The nightly build has completed</message>
<fileset dir="${src.dir}">
<include name="**/*.java"/>
</fileset>
</mail>
</target>

</project>



               <jar jarfile="${dist}/lib/MyProject-${TSTAMP}.jar"basedir="${build}"/>     //hhmm
               <jar jarfile="${dist}/lib/MyProject-${TSTAMP}.jar"basedir="${build}"/>     //hhmm
               <jar jarfile="${dist}/lib/MyProject-${TSTAMP}.jar"basedir="${build}"/>     //hhmm
               <jar jarfile="${dist}/lib/MyProject-${TSTAMP}.jar"basedir="${build}"/>     //hhmm