2011-06-21 99 views
0

我有一個小的ant腳本應該創建3個tar文件。Ant沒有創建tar文件

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

    <property name="dcc-shell.dir" value="${basedir}"/> 
    <property name="dcc-mdp.dir" value="${dcc-shell.dir}/eq-mo-drop-copy-converter-mdp"/> 
    <property name="mdp-code.dir" value="${dcc-mdp.dir}/src/main/*"/> 
    <property name="dcc-srv.dir" value="${dcc-shell.dir}/eq-mo-drop-copy-converter-server"/> 
    <property name="srv-code.dir" value="${dcc-srv.dir}/src/main/*"/> 
    <property name="dcc-trans.dir" value="${dcc-shell.dir}/eq-mo-drop-copy-converter-transformer"/> 
    <property name="trans-code.dir" value="${dcc-trans.dir}/src/main/*"/> 

    <target name="create MDP Tar"> 
     <tar destfile="${dcc-shell.dir}/mdp.tar" 
      basedir="${dcc-mdp.dir}/**" 
      excludes="${dcc-mdp.dir}/target/*" 
     /> 
    </target> 

    <target name="create Trans Tar"> 
     <tar destfile="${dcc-shell.dir}/trans.tar" 
      basedir="${dcc-trans.dir}/**" 
      excludes="${dcc-trans.dir}/target/*" 
     /> 
    </target> 

    <target name="create SRV Tar"> 
     <tar destfile="${dcc-shell.dir}/srv.tar" 
      basedir="${dcc-srv.dir}/**" 
      excludes="${dcc-srv.dir}/target/*" 
     /> 
    </target> 
</project> 

腳本運行良好:

Buildfile: C:\eq-Drop-Copy\eq-mo-drop-copy-converter-shell\build.xml 
BUILD SUCCESSFUL 
Total time: 94 milliseconds 

但是沒有tar文件是在項目中創建。對我自己有些神祕

編輯 我一直在收到以下錯誤!

<target name="create MDP.Tar"> 
    <tar destfile="C:/eq-Drop-Copy/eq-mo-drop-copy-converter-shell/mdp.tar" 
     basedir="C:/eq-Drop-Copy/eq-mo-drop-copy-converter-shell/eq-mo-drop-copy-converter-mdp/*" 
     excludes="C:/eq-Drop-Copy/eq-mo-drop-copy-converter-shell/eq-mo-drop-copy-converter-mdp/target/*" 
    /> 
</target> 

我已經改變了XML的absoulet路徑:

<target name="create MDP.Tar"> 
    <tar destfile="C:/eq-Drop-Copy/eq-mo-drop-copy-converter-shell/mdp.tar" 
     basedir="C:/eq-Drop-Copy/eq-mo-drop-copy-converter-shell/eq-mo-drop-copy-converter-mdp/*" 
     excludes="C:/eq-Drop-Copy/eq-mo-drop-copy-converter-shell/eq-mo-drop-copy-converter-mdp/target/*" 
    /> 
</target> 

但是仍然哪有BASEDIR不存在生成文件相同的錯誤被包含在其中。 MDP目標中的basedir指向一個absoulet路徑,並將其中的所有文件打包。爲什麼會發生錯誤?

+0

由於某些原因,它切斷了<?xml version =「1.0」encoding =「UTF-8」?> 從頂部和從底部 – Will

回答

0

我糾正幾個問題:

  • basedir屬性不應該有 「*」 在裏面。它會自動完成整棵樹。
  • 目標不能包含空格
  • 您可能沒有指定目標。因此,我只是添加了一個default目標「create_all_tars」,並使用<antcall>來調用所需的目標。

    <project basedir="." default="create_all_tars" > 
        <property name="dcc-shell.dir" 
         value="${basedir}"/> 
        <property name="dcc-mdp.dir" 
         value="${dcc-shell.dir}/eq-mo-drop-copy-converter-mdp"/> 
        <property name="mdp-code.dir" 
         value="${dcc-mdp.dir}/src/main/*"/> 
        <property name="dcc-srv.dir" 
         value="${dcc-shell.dir}/eq-mo-drop-copy-converter-server"/> 
        <property name="srv-code.dir" 
         value="${dcc-srv.dir}/src/main/*"/> 
        <property name="dcc-trans.dir" 
         value="${dcc-shell.dir}/eq-mo-drop-copy-converter-transformer"/> 
        <property name="trans-code.dir" 
         value="${dcc-trans.dir}/src/main/*"/> 
    
        <target name="create_all_tars"> 
         <antcall target="create_MDP_Tar"/> 
         <antcall target="create_Trans_Tar"/> 
         <antcall target="create_SRV_tar"/> 
        </target> 
    
        <target name="create_MDP_Tar"> 
         <tar destfile="${dcc-shell.dir}/mdp.tar" 
          basedir="${dcc-mdp.dir}" 
          excludes="${dcc-mdp.dir}/target/**"/> 
        </target> 
    
        <target name="create_Trans_Tar"> 
         <tar destfile="${dcc-shell.dir}/trans.tar" 
          basedir="${dcc-trans.dir}" 
          excludes="${dcc-trans.dir}/target/**"/> 
        </target> 
    
        <target name="create_SRV_Tar"> 
         <tar destfile="${dcc-shell.dir}/srv.tar" 
          basedir="${dcc-srv.dir}" 
          excludes="${dcc-srv.dir}/target/**"/> 
        </target> 
    

這是否幫助?

+0

是的,David解釋了一些更基本的功能。謝謝。無論出於何種原因,你仍然在尋找目標目錄,它的內容是:S – Will

+0

你還在收到錯誤嗎?你能發佈錯誤信息嗎?這將幫助我找出你的「重新失蹤,你是否從'basedir'屬性中刪除了「*」?該屬性不會擴展「*」,但會將其視爲目錄名稱的一部分。 –

+0

發現它的作品,如果我使用'** /目標/ **' – Will

1

很有可能你沒有給目標就叫它。您的打印輸出不顯示任何執行的焦油目標。 嘗試使用目標名稱作爲ant的參數進行調用。然後你會發現在目標名稱中使用空格可能不是一個好主意。

+0

乾杯爲快速回答。你是對的,但它現在給我一個問題'創建MDP.Tar:構建失敗C:\ eq-Drop-Copy \ eq-mo-drop-copy-converter-shell \ build.xml:16:basedir不會存在! ' 但是我知道這個目錄是真實的,我可以在其中看到我的構建文件。我假設'basedir =「$ {dcc-mdp.dir}/*」'將表示您不正確的dcc-mdp.dir – Will

+0

中的所有內容。 basedir必須是不帶'/ *'的目錄名稱。同樣適用於任何'dir'參數。 –

+0

那麼如何指定它必須是所有文件的全部內容?我假定語法和Unix相似。假設:( – Will