2009-12-03 79 views
5

我有一些文件/可執行文件位置可能會有所不同,具體取決於我在哪臺計算機上運行它們,我想通過螞蟻屬性以某種方式將這些文件抽象出來。什麼是最好的方法來做到這一點?是否有一個系統範圍的螞蟻安裝腳本被調用?或者我可以製作這樣的腳本?ant:設置系統相關屬性的最佳方法是什麼?

回答

1

設置一個名爲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 
+0

這裏是爲您的「主機X平臺問題工作方案,只需使用: 將在Linux和Windows – Rebse 2011-02-21 20:15:39

8

我用或多或少的標準build.propertiesbuild-local.properties文件。

第一個包含所有環境通用的默認值,第二個僅包含例外。第一個被檢入顛覆,而另一個不是。

編輯:複製/粘貼AKR的好主意

此外,你可能有一個默認的屬性文件爲每個操作系統或其它的你可能會部署在您的構建系統。這些文件也可以簽入您的版本控制系統。

然後Ant腳本將包括所有的文件如下(記住:在Ant中的第一個定義勝):

<property file="build-local.properties"/> 
<property file="build.properties"/> 
<property file="build-${os.name}.properties"> 
+0

爲什麼建立本地合作第一? – 2013-08-16 14:44:25

+0

@KalpeshSoni因爲有了這個,你可以覆蓋本地文件中的所有屬性(因爲它是第一個加載的)。我認爲錯誤的是操作系統相關文件,因爲它必須覆蓋默認文件,所以它必須出現在第二位。 – PhoneixS 2014-12-12 09:44:28

10

除了弗拉基米爾的解決方案,你可能有一個默認的屬性文件爲每個操作系統或其他你可能會部署你的構建系統。使用$ {os.name}(和其他Java系統屬性)來設置路徑。例如

<property file="build-${os.name}.properties"> 

這些文件可以維護並簽入您的版本控制系統。

+0

+1好主意。我在不同系統上使用'file:///'和'file://'遇到了一些麻煩,您的建議很好地處理了這種情況。 – Vladimir 2009-12-07 08:31:55

相關問題