使用ant,检查或比较文件中列出的所有项目是否出现在另一个文件或列表中



我想知道你是否可以帮忙。我是ant脚本的新手。

我希望能够比较两个列表。File1.txt将包含许多参数的列表,而file2.txt将只包含这些参数的一部分。

dbipAddress=192.168.175.130
QAGENT_QCF=AGENT_QCF
QADJUST_INVENTORY_Q=ADJUST_INVENTORY_Q
QCREATE_ORDER_Q=CREATE_ORDER_Q
QLOAD_INVENTORY_Q=LOAD_INVENTORY_Q

File2.txt

AGENT_QCF
ADJUST_INVENTORY_Q
CREATE_ORDER_Q

我想知道file1.txt中的所有q都包含在file2.txt中,在'='之后,如果它们不是,那么ant脚本将停止,如果它们是,那么脚本将移动到下一个。

所以在上面的例子中,脚本将停止,因为它不包含下面的Q;QLOAD_INVENTORY_Q = LOAD_INVENTORY_Q。

ANT不是编程语言,所以我认为你需要嵌入一个。

下面的例子使用了Groovy:

<project name="demo" default="check">
    <target name="bootstrap">
        <mkdir dir="${user.home}/.ant/lib"/>
        <get dest="${user.home}/.ant/lib/groovy.jar" src="http://search.maven.org/remotecontent?filepath=org/codehaus/groovy/groovy-all/2.1.3/groovy-all-2.1.3.jar"/>
    </target>
    <target name="check">
        <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>
        <groovy>
            def props = new Properties()
            new File("File1.txt").withInputStream { stream -> props.load(stream) }
            def requiredValues = new File("File2.txt").text.split()
            requiredValues.each { check ->
                if (! props.find{it.value == check}) {
                    ant.fail "Cannot find ${check} in File1.txt"
                }
            }
        </groovy>
    </target>
</project>

相关内容

  • 没有找到相关文章

最新更新