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