2008-09-17 27 views

回答

31

我會建議把路徑放在屬性中,然後根據當前操作系統有條件地設置屬性。

<condition property="foo.path" value="C:\Foo\Dir"> 
    <os family="windows"/> 
</condition> 
<condition property="foo.path" value="/home/foo/dir"> 
    <os family="unix"/> 
</condition> 

<fail unless="foo.path">No foo.path set for this OS!</fail> 

作爲一個好處,一旦它在屬性中,您可以在不編輯Ant腳本的情況下覆蓋它。

+0

沒有辦法在Ant中聲明一個在Windows和Linux下一視同仁的路徑嗎?我只是好奇。 – 2009-06-23 22:03:32

1

你不能使用一個變量並根據類型進行賦值嗎?你可以把它放在一個build.properties文件中。或者您可以使用condition進行分配。

2

你可以使用條件的任務轉移到不同的副本任務......從螞蟻手冊:

<condition property="isMacOsButNotMacOsX"> 
<and> 
    <os family="mac"/> 

    <not> 
    <os family="unix"/> 

    </not> 
</and> 

1

聲明一個變量,它是你的操作的根文件夾。用該變量前綴文件夾,包括複製任務。

使用條件設置基於OS的變量,或將其作爲參數傳遞給Ant腳本。

6

之前發佈的操作系統特定變量的建議可行,但很多時候您可以簡單地省略「C:」前綴並使用正斜槓(Unix樣式)文件路徑,它可以在Windows和Unix系統上運行。

所以,如果你想將文件複製到「C:/ tmp目錄」在Windows和「/ tmp目錄」在Unix上,你可以使用類似:

<copy todir="/tmp" overwrite="true" > 
     <fileset dir="${lib.dir}"> 
      <include name="*.jar" /> 
     </fileset> 
</copy> 

如果你想/需要設置

<condition property="root.drive" value="C:/" else="/"> 
     <os family="windows" /> 
    </condition> 
    <copy todir="${root.drive}tmp" overwrite="true" > 
      <fileset dir="${lib.dir}"> 
       <include name="*.jar" /> 
      </fileset> 
    </copy> 
0

蟻的contrib具有< osfamily/>任務:基於OS條件的路徑,它可以作爲被簡化。這會將操作系統的系列公開給一個屬性(您指定的名稱)。這可能有一些好處。

相關問題