簡體   English   中英

Ant屬性文件中的條件屬性

[英]Conditional property in Ant properties' file

是否可以有條件地在Ant 屬性文件中設置屬性值(與build.xml相反)? 例如,如果設置了apache.root屬性my_property將為${apache.root}/myapp ,否則為/var/www/myapp 如果沒有,通常的做法是-可重用的build.xml文件?

使用條件任務:

<project name="demo" default="run">

    <condition property="my_property" value="${apache.root}/myapp" else="/var/www/myapp">
        <isset property="apache.root"/>
    </condition>

    <target name="run">
        <echo message="my_property=${my_property}"/>
    </target>

</project>

您可以基於環境或條件變量包括不同的屬性文件。 例如

    <echo>Building ${ant.project.name} on OS: ${os.name}-${os.arch}</echo>
<property file="build-${os.name}.properties" />

其中將包含一個名為“ build-Windows 7.properties”或“ build-Linux.properties”的文件,具體取決於運行構建的位置。 當然,property指令會在當前目錄和主目錄中查找。 因此,屬性文件可以是構建源的一部分,也可以是構建帳戶的主目錄中的一部分。

您還可以使用條件標簽來生成屬性文件名稱的一部分,然后選擇

您可以使用的最簡單的條件形式之一是:

<exec executable="hostname" outputproperty="hostname"/>
<condition property="python" value="/usr/bin/python3.4">
  <equals arg1="${hostname}"    arg2="host0"/>
</condition>
<property name="python" value="/usr/bin/python"/>

例如,以適應不同的python安裝路徑。 在這里,默認的安裝路徑是/ usr / bin / python,除了host0以外是/usr/bin/python3.4

OP詢問的是屬性文件,而不是ant構建文件中的文件。 不幸的是,不能從屬性文件中完成條件。 您可以做的是為每組相關屬性設置單獨的屬性文件。 例如:

Build.xml

<condition property="app.name" value="appA">
    <equals arg1="${appName}" arg2="A" />
</condition>
<condition property="app.name" value="appB">
    <equals arg1="${appName}" arg2="B" />
</condition>
<property file="${app.name}.properties" />
<!-- since properties are immutable, set your defaults here -->
<property name="apache.root" value="/var" />
<property file="restOfProps.properties" />

appA.properties

apache.root=/appA

restOfProps.properties

my_property=${apache.root}/myapp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM