繁体   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