我目前正在与一些喜欢设置定义环境特定变量而不是使用属性文件的 Ant 任务的开发人员合作。他们似乎更喜欢这样做,因为这样更容易输入:
ant <environment task> dist
比输入:
ant -propertyfile <environment property file> dist
例如:
<project name="whatever" default="dist">
<target name="local">
<property name="webXml" value="WebContent/WEB-INF/web-local.xml"/>
</target>
<target name="remote">
<property name="webXml" value="WebContent/WEB-INF/web-remote.xml"/>
</target>
<target name="build">
<!-- build tasks here --->
</target>
<target name="dist" depends="build">
<war destfile="/dist/foo.war" webxml="${webXml}">
<!-- rest of war tasks here -->
</war>
</target>
我发现很难让他们相信属性文件是正确的选择。我相信属性文件更好,因为:
- 它们提供了更大的灵活性——如果您需要一个新环境,只需添加一个新的属性文件
- 发生了什么更清楚了-您必须了解这个小“技巧”才能意识到他们正在完成什么
- 不提供默认值和使用覆盖的能力 - 如果他们使用属性文件,他们可以在项目顶部提供默认值,但能够用文件覆盖它们
- 如果未在命令行上提供环境任务,脚本不会中断
当然,他们听到的只是他们需要更改 Ant 脚本并且必须在命令行上输入更多内容。
您能否提供任何其他参数来支持属性文件而不是“属性任务”?