我想使用ANT比较两个文件(比如file1.txt、file2.txt)的内容。
如果文件内容相同,则应将某些"属性"设置为true;如果内容不相同,则应该将"属性"设为false。
有人能向我推荐任何可以做到这一点的ANT任务吗。
提前谢谢。
您可以使用以下内容
<condition property="property" value="true">
<filesmatch file1="file1"
file2="file2"/>
</condition>
只有当文件相同时,才会设置属性。然后,您可以使用检查该房产
<target name="foo" if="property">
...
</target>
这在ant中是可用的,没有添加依赖项,请参阅此处了解其他条件。
我在相同的情况下比较两个文件,并根据文件匹配或不匹配切换到不同的目标。。。
这是代码:
<project name="prospector" basedir="../" default="main">
<!-- set global properties for this build -->
<property name="oldVersion" value="/code/temp/project/application/configs/version.ini"></property>
<property name="newVersion" value="/var/www/html/prospector/application/configs/version.ini"></property>
<target name="main" depends="prepare, runWithoutDeployment, startDeployment">
<echo message="version match ${matchingVersions}"></echo>
<echo message="version mismatch ${nonMatchingVersion}"></echo>
</target>
<target name="prepare">
<!-- gets true, if files are matching -->
<condition property="matchingVersions" value="true" else="false">
<filesmatch file1="${oldVersion}" file2="${newVersion}" textfile="true"/>
</condition>
<!-- gets true, if files are mismatching -->
<condition property="nonMatchingVersion" value="true" else="false">
<not>
<filesmatch file1="${oldVersion}" file2="${newVersion}" textfile="true"/>
</not>
</condition>
</target>
<!-- does not get into it.... -->
<target name="startDeployment" if="nonMatchingVersions">
<echo message="Version has changed, update gets started..."></echo>
</target>
<target name="runWithoutDeployment" if="matchingVersions">
<echo message="Version equals, no need for an update..."></echo>
</target>
属性是正确的,并且在更改文件内容时会发生更改。nonMatchingVersions的任务永远不会启动。