是否可以有条件地在 Ant属性文件(而不是build.xml
)中设置属性值?例如,如果apache.root
设置了属性 -my_property
将是${apache.root}/myapp
,/var/www/myapp
否则。如果没有,通常的做法是什么 - 可重用build.xml
文件?
问问题
31446 次
4 回答
30
使用条件任务:
<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>
于 2012-11-26T07:21:02.497 回答
2
您可以根据环境或条件变量包含不同的属性文件。例如
<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”的文件,具体取决于运行构建的位置。当然,属性指令在当前目录和主目录中查找。所以属性文件可以是构建源的一部分,也可以是构建帐户的主目录。
您可以使用条件标签生成属性文件的部分名称以及选择
于 2013-01-29T19:07:17.407 回答
1
您可以使用的最简单的条件之一是:
<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
于 2017-03-01T13:57:04.570 回答
1
OP 在询问属性文件,而不是在 ant 构建文件中。不幸的是,不能从属性文件中完成条件。您可以做的是为每组依赖属性设置单独的属性文件。例如:
构建.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
于 2017-08-14T22:48:50.610 回答