[英]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.