我想知道你是否可以提供帮助。我是ant脚本的新手。
我希望能够比较两个列表。 File1.txt将包含许多参数的列表,file2.txt将只包含这些参数的一部分。
FILE1.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脚本将停止并且如果它们那么将显示Echo消息脚本将移动到下一个。
因此,在上面的示例中,脚本将停止,因为它不包含以下Q; QLOAD_INVENTORY_Q = LOAD_INVENTORY_Q。
答案 0 :(得分:1)
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>