DANCE WITH JAVA

开发出高质量的系统

常用链接

统计

积分与排名

好友之家

最新评论

ant教程(六) ant进阶

ok,上边你完成了任务,但是你是否有些感触呢,在那些build.xml中,大多数是重复的,而且更改一次目录需要更改不少东西。是否能让工作做的更好一点呢,答案是肯定的。
引入两个东西:
1,propery
2,xml include

这两个东西都有一个功能,就是能把build.xml中<propery />中的内容分离出来,共同使用
除此之外它们各有特点:

propery的特点是维护简单,只需要简单的键值对,因为并不是所有人都喜欢xml的格式

xml include的特点是不单可以提取出属性来,连target也可以。

还是以前的例子:
例如我们想把src1 src2 src3这三个属性从xml中提出来,可以新建一个文件叫all.properties
里边的内容
src1=D:\\study\\ant\\src1
src2=D:\\study\\ant\\src2
src3=D:\\study\\ant\\src3
然后你的build.xml文件可以这样写,别人只需要更改配置文件,而不许要更改你的build.xml文件了

<?xml version="1.0" encoding="UTF-8" ?>
<project name="main" default="build" basedir=".">
 <property file="all.properties" />
 <property name="bin" value="${basedir}\bin" />
 <target name="init">
  <mkdir dir="${bin}" />
 </target>
 <target name="run">
  <ant dir="${src1}" target="run" />
  <ant dir="${src2}" target="run" />
  <ant dir="${src3}" target="run" />
 </target>
 <target name="clean">
  <ant dir="${src1}" target="clean" />
  <ant dir="${src2}" target="clean" />
  <ant dir="${src3}" target="clean" />
 </target> 
 <target name="build" depends="init,call">
  <copy todir="${bin}">
   <fileset dir="${src1}">
    <include name="*.jar" />
   </fileset>
   <fileset dir="${src2}">
    <include name="*.jar" />
   </fileset>
   <fileset dir="${src3}">
    <include name="*.jar" />
   </fileset>
  </copy>
 </target>
 <target name="rebuild" depends="build,clean">
  <ant target="clean" />
  <ant target="build" />
 </target>
 <target name="test">
  <ant dir="${src1}" target="test" />
  <ant dir="${src2}" target="test" />
  <ant dir="${src3}" target="test" />
 </target>
</project>
如果你自己看的话你会看到这样一个target
<target name="test">
 <ant dir="${src1}" target="test" />
 <ant dir="${src2}" target="test" />
 <ant dir="${src3}" target="test" />
</target>
有的时候你想给每个小组的build.xml加入几个target,一种做法是每个里边写,然后在这里调用
但是有一种更好的方法。
你可以写一个include.xml文件,内容如下
<?xml version="1.0" encoding="UTF-8" ?>
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<target name="test" >
 <ant target="run" />
</target>
然后更改你三个小组的build.xml文件,每个里边加入如下内容
<!--include a xml file ,it can be common propery ,can be also a target  -->
<!DOCTYPE project [
<!ENTITY share-variable SYSTEM "file:../include.xml">
]>
&share-variable;
变成如下的样子
这个时候,你只要在include.xml添加propery , 添加target,三个build.xml会同时添加这些propery和target
而且不会让三个组的build.xml变得更复杂。

<?xml version="1.0" encoding="UTF-8" ?>
<!--include a xml file ,it can be common propery ,can be also a target  -->
<!DOCTYPE project [
<!ENTITY share-variable SYSTEM "file:../include.xml">
]>
<project name="HelloWorld" default="run" basedir=".">
 <!--use the include  -->
 &share-variable;
 <!--defined the property-->
 <!--via include
 <property name="src" value="src"/>
 <property name="dest" value="classes"/>
 -->
 <property name="hello_jar" value="hello1.jar"/>
 <!--define the op-->
 <target name="init">
  <mkdir dir="${dest}"/>
 </target>
 <target name="compile" depends="init">
  <javac srcdir="${src}" destdir="${dest}"/>
 </target>
 <target name="build" depends="compile">
  <jar jarfile="${hello_jar}" basedir="${dest}"/>
 </target>
 <target name="run" depends="build">
  <java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
 </target>
 <target name="clean">
  <delete dir="${dest}" />
  <delete file="${hello_jar}" />
 </target>
 <target name="rerun" depends="clean,run">
  <ant target="clean" />
  <ant target="run" />
 </target>
</project>

posted on 2006-09-20 00:19 dreamstone 阅读(1564) 评论(1)  编辑  收藏 所属分类: 利器

评论

# re: ant教程(六) ant进阶 2007-07-23 09:14 郁闷

请问有一个j2ee工程,使用了hibernate,struts技术,那么如何编写buiuld.xml
以完成编译,打war包的工作呢?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: