ant基本开发

来源:互联网 发布:monsta知乎 编辑:程序博客网 时间:2024/05/16 07:49
<?xml version="1.0" encoding="UTF-8"?>
<project  default="execute">
<!--  location老代替value,用location来定义路径    
location可以将路径自动转换为当前系统格式的路径    -->
<property  name="build.dir"  location="build">
</property>
<property  name="build.classes" location="${build.dir}\classes">
</property>
<property name="build.src" location="${build.dir}\src"></property>


<target name="printdir">
<echo>${build.src}</echo> 
    <echo message="hello boys"></echo>
</target>

<fileset  id="src.path" dir="src">


<include name="**/*.*"/>
<!-- 包括    只能用**表示路径  -->
<exclude name="**/*Test*.*"/>
<!-- 除了  -->
</fileset>


<target name="init">
<delete dir="${build.dir}">
</delete>
<mkdir dir="${build.dir}"/>
<mkdir dir="build/src"/>
<mkdir dir="build/classes"/>
<mkdir dir="build/dist"/>
</target>


<target name="compile" depends="init">
<!-- destdir编译后的文件放在哪个路径下面       srcdir表示要执行的文件路径-->
<javac destdir="build/classes"  srcdir="src"/>
</target>


<!--先执行init任务   再执行copySrc任务 -->
<target name="copySrc"  depends="init">
<copy todir="build/src">
<fileset refid="src.path">
</fileset>
</copy>
</target>




<target name="jar"  depends="compile,copySrc">
<jar destfile="build/dist/hello.jar"  basedir="build/classes">
<manifest>
<attribute name="Main-Class"  value="hello"/>
<attribute name="Build-By" value="shaowei"/>
</manifest>
</jar>
</target>


<target name="execute" depends="jar">


<echo>hello mb</echo>
<echo>基于类路径的class类,classes(编译文件)文件来执行</echo>
<java classpath="build/classes"  classname="hello">
<arg value="hello boy"/>
<arg value="你好"/>
</java>


<echo>通过jar文件来执行</echo>
<!-- fork设置为true表示用jdk的环境来运行  而不是用ant的环境   -->
<java  jar="build/dist/hello.jar"   fork="true">
<arg value="hello girls"/>
<arg value="你好"/>
</java>




</target>

</project>




4.4 时间戳
在生成环境中使用当前时间和日期,以某种方式标记某个生成任务的输出,以便记录它是何时生成的,这经常是可取的。这可能涉及编辑一个文件,以便插入一个字符串来指定日期和时间,或将这个信息合并到 JAR 或 zip 文件的文件名中。
这种需要是通过简单但是非常有用的 tstamp 任务来解决的。这个任务通常在某次生成过程开始时调用,比如在一个 init 目标中。这个任务不需要属性,许多情况下只需 <tstamp/> 就足够了。
tstamp 不产生任何输出;相反,它根据当前系统时间和日期设置 Ant 属性。下面是 tstamp 设置的一些属性、对每个属性的说明,以及这些属性可被设置到的值的例子:
属性 说明 例子 
DSTAMP 设置为当前日期,默认格式为yyyymmdd 20031217
TSTAMP 设置为当前时间,默认格式为 hhmm 1603
TODAY 设置为当前日期,带完整的月份 2003 年 12 月 17 日
例如,在前一小节中,我们按如下方式创建了一个 JAR 文件:

<jar destfile="package.jar" basedir="classes"/>

在调用 tstamp 任务之后,我们能够根据日期命名该 JAR 文件,如下所示:

<jar destfile="package-${DSTAMP}.jar" basedir="classes"/>

因此,如果这个任务在 2003 年 12 月 17 日调用,该 JAR 文件将被命名为 package-20031217.jar。
还可以配置 tstamp 任务来设置不同的属性,应用一个当前时间之前或之后的时间偏移,或以不同的方式格式化该字符串。所有这些都是使用一个嵌套的 format 元素来完成的,如下所示:

<tstamp>
<format property="OFFSET_TIME"
pattern="HH:mm:ss"
offset="10" unit="minute"/>
</tstamp>

上面的清单将 OFFSET_TIME 属性设置为距离当前时间 10 分钟之后的小时数、分钟数和秒数。
用于定义格式字符串的字符与 java.text.SimpleDateFormat 类所定义的那些格式字符相同

将生成文件链接起来

使用 ant 任务来从一个 Ant 生成中调用另一个 Ant 生成是很容易的。在简单的情况下,您可以使
用 antfile 属性,仅指定那些要使用的生成文件,Ant 将生成该生成文件中的默认目标。例如:
<ant antfile="sub-build.xml"/>
在父生成文件中定义的任何属性默认将传递给子生成文件,虽然这可以通过指定
inheritAll="false"来避免。通过使用property 元素来传入显式的属性也是可以做到的—— 即
使将 inheritAll 设置为 false,这些属性也仍然适用于子生成文件。这个功能很适合用于给子生
成文件传入参数。
让我们来考虑一个例子。下面是我们想要调用的一个生成文件:
<?xml version="1.0"?>
<project default="showMessage">
<target name="showMessage">
<echo message="Message=${message}"/>
</target>
</project>


(我们在前面还没有遇到过 echo 任务—— 它简单地输出给定的消息。)
下面是调用第一个生成文件的第二生成文件,它还给第一个生成文件传入message 属性:
<?xml version="1.0"?>
<project default="callSub">
<target name="callSub">
<ant antfile="sub.xml" target="showMessage" inheritAll="false">
<property name="message" value="Hello from parent build"/>
</ant>
</target>
</project>
运行第二个生成文件所得到的输出如下:
Buildfile: build.xml
callSub:
showMessage:
[echo] Message=Hello from parent build
BUILD SUCCESSFUL
Total time: 0 seconds





0 0
原创粉丝点击