<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Thinking in sky

    --老賀的BLOG

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      21 隨筆 :: 0 文章 :: 35 評論 :: 0 Trackbacks

    Ant真是太方便了,以前都沒注意到它。功能很強大,能創(chuàng)建數(shù)據(jù)庫,配置服務器,部署發(fā)布應用……只需要寫好build.xml文件,剩下的就交給ant來“安裝”你的WEB應用了。

    Appfuse的第一個ant命令是ant new,其任務是建立一個新命名的project,少不了會復制很多文件。build.xml中也有很多copy操作,為了搞清楚ant new到底干了些什么事,還是先把copy操作了解一下。看了會ant的DOCS,網(wǎng)上也找了些文章,發(fā)現(xiàn)copy這部分都是一帶而過,講得很淺,于是我就只有自己實驗下,發(fā)現(xiàn)還有點收獲。 ant版本為1.6.5。

    1. 拷貝單個文件到指定目錄下。
    例:<copy todir="${basedir}/new" file="${basedir}/old/old1.txt1">
    將${basedir}/old/old.txt文件拷貝到${basedir}/new下

    2. 拷貝一批文件到指定目錄下
    例:<copy todir="${basedir}/new">
    ???????????<fileset dir="${basedir}/old">
    ??????????????<include name="old1.txt" />
    ??????????????<include name="old2.txt" />
    ????????????? <exclude name="old8.txt" />
    ????????? </fileset>
    ?????? </copy>
    ????? 這里fileset定義的是原文件的組成形式,<include/>子屬性表示包括,<exclude/>子屬性表示排除,很簡單,通過他們組合實現(xiàn)多文件的篩選,當然我這個例子用得很傻。比如
    ??????????????? <include name="appgen/**"/>
    ??????????????? <include name="ibatis/**"/>
    ??????????????? <exclude name="**/*.log"/>
    ????? 拷貝appget目錄和ibatis目錄下除了.log文件以外的其它所有文件和子目錄。

    ??????可以把<fileset/>簡寫成<fileset dir="${basedir}/old" includes="old1.txt,old2.txt" />,includes可以理解成include的復數(shù)形式,包含多個文件時用逗號隔開,excludes也一樣。

    3. 拷貝一個目錄到指定目錄下
    例:<copy todir="${basedir}/new">
    ???????????<fileset dir="${basedir}/old">
    ?????????????<include name="appgen" />
    ???????????? <include name="appgen/"?/>
    ???????????? <include name=appgen/**" />
    ???????????? <include name="appgen/***" />
    ???????????</fileset>
    ???????</copy>
    ??????同樣使用<fileset/>屬性,name指定目錄名,不過這里要分兩種情況,用<include/>子屬性和不用<include/>子屬性.
    ????? 若使用<include/>, 又要分三種情況
    ????????? 若是“appgen”,則只會拷貝名為appgen的空目錄過去,它里面的文件和子目錄則不會拷貝。
    ????????? 若是“appgen/”,或“appgen/**”,則會把整個appgen目錄拷貝過去,包括里面的文件和子目錄。
    ????????? 若是“appgen/*”,則只會把該目錄和該目錄下第一級子目錄的所有東西拷貝過去,而不會拷貝第二級和第二級以下的。注:“appgen/*”這兒是一個*號,*號若大于兩個,也跟一個*號是同樣效果。比如“appgen/*”和“appgen/****”都只拷貝appgen目錄下第一級子目錄。

    注:若appeng這個目錄本身就是個空目錄,無論怎么寫,這個空目錄都不會被拷貝。也就是說,copy操作不會產(chǎn)生創(chuàng)建空目錄的作用,要想創(chuàng)建空目錄,只有用mkdir。

    ??????若不使用任何<include>屬性,如
    ?????????? <fileset dir="${basedir}/old">
    ?????????? </fileset>
    ??????則會拷貝${basedir}/old下的所有文件和子目錄。

    注:使用<exclude/>排除目錄時,目錄名必須寫成“appgen/”或“appgen/**”形式,否則不會生效。

    ??????以上是三種拷貝到目錄的種類,注意如果計算機中沒有todir指定的路徑,ant將會自動創(chuàng)建這個路徑。

    4. 拷貝單個的文件:
    〈copy?tofile="old.txt" file="new.txt" /〉就這么簡單就行了。
    當然也可以寫成
    ? <copy tofile="${basedir}/new/new.txt">
    ?????<fileset dir="${basedir}/old" includes="old.txt" />
    ??</copy>
    ??????這里includes就只能寫一個文件,不能寫上多個文件,因為不能將多個文件復制到一個文件中去,所以這樣麻煩的寫法是沒有意義的。



    ??????復制肯定還要涉及到同名覆蓋的問題,ant在copy類的API中說明:Files are only copied if the source file is newer than the destination file,這里的newer是指文件的修改時間,即使你在修改時文件內(nèi)容沒有任何變化,只是導致修改時間變了,ant同樣會覆蓋同名文件,也就是說,ant不會檢查文件內(nèi)容。

    ??????對于是復制目錄的情況,由于目錄沒有修改時間,ant還是通過檢查目錄內(nèi)文件的修改時間來決定是否覆蓋的,若目錄內(nèi)某文件修改時間有變化,則會覆蓋這個文件,而不是整個目錄。

    如果要強行覆蓋,<copy/>有個overwrite屬性,默認為false,改成true就行了。

    posted on 2006-12-10 04:54 老賀 閱讀(21838) 評論(5)  編輯  收藏 所屬分類: J2EE框架

    評論

    # re: ant中copy操作學習心得 2007-07-11 16:28 hyl
    怎么將當前目錄下嵌套在各級目錄下的所有的source目錄拷貝整合在一個新建的文件夾里呢  回復  更多評論
      

    # re: ant中copy操作學習心得 2007-07-13 16:07 hyl
    如何象Windows底下查找SRC目錄,并將這些目錄合并成一個新的SRC目錄
    我想這也是通過copy來實現(xiàn)的,但做了很多實驗,都沒辦法完成查找相應的目錄并合并他們?nèi)缦拢?
    1. 從指定的一個目錄下 ,查找 src 目錄
    2. 將這些src 目錄合并到一個 src 目錄
    3. 如果 src 目錄下含有 “java” 這個目錄,那么將java 目錄下包含的文件及其目錄移動到 src 目錄下

    期待和您一起探討

    我的郵箱xinzi_815@163.com  回復  更多評論
      

    # re: ant中copy操作學習心得 2008-07-22 13:55 ckckck
    <copy todir="newsrc" flatten="true">
    <fileset dir=".">
    <include name="**/src/**"/>
    </fileset>
    </copy>@hyl
      回復  更多評論
      

    # re: ant中copy操作學習心得 2009-04-07 18:12 雷蒙磨
    我是直接跑到路徑下拷貝的,正在想辦法直接拷貝整個的文件夾。  回復  更多評論
      

    # re: ant中copy操作學習心得 2013-06-17 17:18 akingseu
    總結(jié)得非常到位,尤其是文件覆蓋時不檢查內(nèi)容,只檢查同名文件的修改時間,這個很nice  回復  更多評論
      

    主站蜘蛛池模板: 色吊丝永久在线观看最新免费| 亚洲一级免费毛片| 国产精品免费看久久久久| 8888四色奇米在线观看免费看| 一级成人毛片免费观看| 亚洲色丰满少妇高潮18p| 亚洲短视频在线观看| 国产亚洲美女精品久久久久狼| 免费一级毛片一级毛片aa| 毛片A级毛片免费播放| 精品无码国产污污污免费网站 | 一级做a免费视频观看网站| 亚洲免费综合色在线视频| 亚洲成aⅴ人片在线观| 婷婷久久久亚洲欧洲日产国码AV| 亚洲欧洲日产国码高潮αv| 免费看国产精品麻豆| 国产精品免费播放| 欧洲美熟女乱又伦免费视频 | 亚洲人成人无码.www石榴 | 免费黄色网址入口| 免费无码又黄又爽又刺激| 午夜性色一区二区三区免费不卡视频 | 精品亚洲成A人在线观看青青| 2020亚洲男人天堂精品| 亚洲一区二区三区91| 亚洲国产日韩在线成人蜜芽| 亚洲精品福利网泷泽萝拉| 亚洲视频免费观看| 亚洲精品91在线| 亚洲最大福利视频| 亚洲H在线播放在线观看H| 亚洲综合在线一区二区三区| 中文字幕亚洲精品无码| 亚洲精品无码成人片久久不卡| 亚洲欧美成人一区二区三区| 久久亚洲精品高潮综合色a片| 另类小说亚洲色图| 四虎国产精品成人免费久久| 亚洲一区二区三区免费| 丁香花在线视频观看免费|