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 閱讀(1568) 評論(1)  編輯  收藏 所屬分類: 利器

          評論

          # re: ant教程(六) ant進階 2007-07-23 09:14 郁悶

          請問有一個j2ee工程,使用了hibernate,struts技術,那么如何編寫buiuld.xml
          以完成編譯,打war包的工作呢?  回復  更多評論   

          主站蜘蛛池模板: 安顺市| 南雄市| 平泉县| 辰溪县| 阿荣旗| 富顺县| 大邑县| 大化| 清水河县| 北票市| 克东县| 多伦县| 奈曼旗| 宁海县| 彩票| 兴义市| 二连浩特市| 侯马市| 金川县| 交口县| 苍山县| 武功县| 丰台区| 登封市| 祥云县| 临洮县| 栾城县| 新巴尔虎右旗| 杨浦区| 东至县| 南雄市| 渝北区| 遵义县| 西藏| 探索| 荃湾区| 延长县| 恩平市| 邢台县| 赤水市| 二连浩特市|