我有一些文件/可執行文件位置可能會有所不同,具體取決於我在哪臺計算機上運行它們,我想通過螞蟻屬性以某種方式將這些文件抽象出來。什麼是最好的方法來做到這一點?是否有一個系統範圍的螞蟻安裝腳本被調用?或者我可以製作這樣的腳本?ant:設置系統相關屬性的最佳方法是什麼?
回答
設置一個名爲properties.xml的ant構建文件,其中您應該定義要自定義的屬性。
下面是properties.xml中的樣板,我用我的項目(我已經從螞蟻的書籍之一將它改編):
<?xml version="1.0" encoding="UTF-8"?>
<project
name="workspace-properties"
>
<dirname
property="workspace-properties.basedir"
file="${ant.file.workspace-properties}"
/>
<!--
==========================================================
Load Environment Variables
==========================================================
-->
<!-- #Load environment variables -->
<property environment="env" />
<!-- this is here to deal with the fact that an IntelliJ IDEA build
has no ant home
-->
<property
name="ant.home"
value="${env.ANT_HOME}"
/>
<!-- get Unix hostname, and set to Windows comparable name -->
<!-- #Trick to get host name x-platform -->
<property
name="env.COMPUTERNAME"
value="${env.HOSTNAME}"
/>
<!--
==========================================================
Load property files
Note: the ordering is VERY important.
==========================================================
-->
<!-- #Allow even users property file to relocate -->
<property
name="user.properties.file"
location="${user.home}/.build.properties"
/>
<!-- Load the application specific settings -->
<!-- #Project specific props -->
<property file="build.properties" />
<!--
==========================================================
Define your custom properties here.
You can overwrite them through build.properties and
${user.home}/.build.properties
==========================================================
-->
<property name="myexec1" location="/usr/bin/myexec1"/>
<property name="myexec2" location="/usr/bin/myexec2"/>
</project>
這裏重要的是要拿出許多有用的默認財產價值儘可能,那麼你甚至可能永遠不會拿出自定義build.properties
文件。
然後你只需<import>
這個文件在你的項目的build.xml中。
<project
name="my-project"
>
<!-- this is done, so you may import my-project somewhere else -->
<dirname
property="my-project.basedir"
file="${ant.file.my-project}"
/>
<import file="${my-project.basedir}/relative/path/to/properties.xml"/>
<target name="using.myexec1">
<echo message="myexec1=${myexec1}"/>
</target>
</project>
如果你想在my-project
myexec1自定義值,只是在build.xml文件所在的同一目錄中刪除一個自定義的扁平build.properties文件。
build.properties文件可能是這樣的:
myexec1=c:/custom/path/to/myexec1.exe
我用或多或少的標準build.properties
和build-local.properties
文件。
第一個包含所有環境通用的默認值,第二個僅包含例外。第一個被檢入顛覆,而另一個不是。
編輯:複製/粘貼AKR的好主意
此外,你可能有一個默認的屬性文件爲每個操作系統或其它的你可能會部署在您的構建系統。這些文件也可以簽入您的版本控制系統。
然後Ant腳本將包括所有的文件如下(記住:在Ant中的第一個定義勝):
<property file="build-local.properties"/>
<property file="build.properties"/>
<property file="build-${os.name}.properties">
爲什麼建立本地合作第一? – 2013-08-16 14:44:25
@KalpeshSoni因爲有了這個,你可以覆蓋本地文件中的所有屬性(因爲它是第一個加載的)。我認爲錯誤的是操作系統相關文件,因爲它必須覆蓋默認文件,所以它必須出現在第二位。 – PhoneixS 2014-12-12 09:44:28
除了弗拉基米爾的解決方案,你可能有一個默認的屬性文件爲每個操作系統或其他你可能會部署你的構建系統。使用$ {os.name}(和其他Java系統屬性)來設置路徑。例如
<property file="build-${os.name}.properties">
這些文件可以維護並簽入您的版本控制系統。
+1好主意。我在不同系統上使用'file:///'和'file://'遇到了一些麻煩,您的建議很好地處理了這種情況。 – Vladimir 2009-12-07 08:31:55
- 1. 在設置屬性之前檢查屬性的最佳方法是什麼?
- 2. 檢查屬性是否存在並設置的最佳方法是什麼?
- 3. 寫5星級評分系統的最佳方法是什麼?
- 4. 表示軟件系統的最佳建模方法是什麼?
- 5. 刷新計算屬性的依賴關係樹的最佳方式是什麼?
- 6. 設置用戶張貼圖像上傳系統的最佳方式是什麼?
- 7. 使用jQuery,設置投票系統的最佳方式是什麼?
- 8. 通過PHP設置html屬性的最佳實踐是什麼?
- 9. 什麼是通過多對多關係屬性訪問的最佳方式?
- 10. 常春藤依賴關係的rev屬性的最佳做法是什麼?
- 11. 列出Merb :: Slices依賴關係的最佳方法是什麼?
- 12. 將has_many關係轉換爲has_and_belongs_to_many的最佳方法是什麼?
- 13. 檢查r中對應關係的最佳方法是什麼
- 14. 處理安裝依賴關係的最佳方法是什麼?
- 15. 設置光標/插入位置的最佳方法是什麼?
- 16. 爲此用例設置我的表和關係的最佳方式是什麼?
- 17. 返回當前屬性名稱的最佳方法是什麼?
- 18. 什麼是用DOM4J更改XML屬性的最佳方法
- 19. 將Last屬性添加到System.Array的最佳方法是什麼?
- 20. 什麼是隻讀屬性的最佳方法
- 21. 在ExtJS4中創建屬性的最佳方法是什麼?
- 22. 存儲計數屬性的最佳方法是什麼?
- 23. 在rails中設置多個多對多關係的最佳方式是什麼?
- 24. 什麼是顯示貨幣符號區域設置相關的最佳方式?
- 25. Tomcat的系統屬性'tomcat.bind.address'是什麼?
- 26. 設置系統屬性
- 27. 在設計ORM時,表現關係的最佳方法是什麼?
- 28. 設計相同性質的相關實體(即:相關文章)的最佳方式是什麼?
- 29. 用passport-twitter設置locomotivejs的最佳方法是什麼?
- 30. 爲POJO設置攔截器的最佳方法是什麼?
這裏是爲您的「主機X平臺問題工作方案,只需使用: 將在Linux和Windows –
Rebse
2011-02-21 20:15:39