我有一個使用'copy' task執行復制操作的Ant腳本。它是爲Windows編寫的,並且具有硬編碼的C:\路徑作爲'todir'參數。我看到'執行'任務有一個操作系統的參數,有沒有類似的方式來分支基於操作系統的副本?我可以使Ant副本任務操作系統特定?
19
A
回答
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腳本的情況下覆蓋它。
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條件的路徑,它可以作爲被簡化。這會將操作系統的系列公開給一個屬性(您指定的名稱)。這可能有一些好處。
相關問題
- 1. 使用Qt時,我是否必須在特定的操作系統上編譯特定的操作系統?
- 2. 在Ant副本任務中擴展*
- 3. Java操作系統的Gradle任務
- 4. 操作系統軟件任務調度
- 5. 我可以將本機操作系統安裝作爲虛擬機操作系統運行嗎?
- 6. 焦油提取到工作副本操作系統
- 7. 任何人都可以解釋這個輸出(操作系統)?
- 8. 操作系統的任務序列變量,我想要安裝
- 9. 我可以在任何系統上使用GPU作爲GPGPU
- 10. Bada操作系統中的預定任務
- 11. 您可以從自定義Ant任務中執行Ant任務嗎?
- 12. jQuery - 檢測操作系統和操作系統版本
- 13. 防止操作系統文件的多個副本X
- 14. 操作系統VBS腳本
- 15. 針對Perl測試腳本的操作系統特定測試
- 16. 如何獲取Ruby上的特定操作系統版本?
- 17. 預定義爲iPhone操作系統和Mac操作系統
- 18. 我應該學習操作系統特定語言還是Java?
- 19. 如何從Lua腳本中確定系統的操作系統?
- 20. 是否可以製作使用VB.NET的操作系統?
- 21. 可以升級設備的android最新操作系統版本
- 22. Ant腳本linux系統
- 23. 使用apache-ant向IIS運行操作系統命令配置
- 24. 確定Azure雲服務的客戶操作系統版本
- 25. 我怎麼可以將操作系統值傳遞給sql
- 26. 我可以雙啓動兩個iPhone操作系統嗎?
- 27. 我在哪裏可以下載諾基亞操作系統?
- 28. 我可以在機器代碼中編寫操作系統嗎?
- 29. 我們可以從sqlite3執行操作系統命令嗎
- 30. 「」上的iPhone操作系統版本與任何支持開發的iPhone操作系統版本都不匹配,此副本的Xcode
沒有辦法在Ant中聲明一個在Windows和Linux下一視同仁的路徑嗎?我只是好奇。 – 2009-06-23 22:03:32