gpt4 book ai didi

ant - 如果满足两个条件,则执行 Ant 任务

转载 作者:行者123 更新时间:2023-12-04 01:59:38 26 4
gpt4 key购买 nike

上述 脚本使用 Ant-1.7.1 核心语句实现 if dir_is_empty then git-clone else git-fetch:

<target name="update" depends="git.clone, git.fetch" />

<target name="check.dir">
<fileset dir="${dir}" id="fileset"/>
<pathconvert refid="fileset" property="dir.contains-files" setonempty="false"/>
</target>

<target name="git.clone" depends="check.dir" unless="dir.contains-files">
<exec executable="git">
<arg value="clone"/>
<arg value="${repo}"/>
<arg value="${dir}"/>
</exec>
</target>

<target name="git.fetch" depends="check.dir" if="dir.contains-files" >
<exec executable="git" dir="${dir}">
<arg value="fetch"/>
</exec>
</target>

(见 my other post )

但是如何实现一个由两个条件启用的target呢?
if dir_does_not_exist or dir_is_empty then git-clone else git-fetch
我目前的尝试:
<target name="git.clone" 
depends="chk.exist, chk.empty"
unless="!dir.exist || dir.noempty" >
[...]
</target>

<target name="chk.exist">
<condition property="dir.exist">
<available file="${dir}/.git" type="dir"/>
</condition>
</target>

[...]

我更喜欢 Ant-1.7.1 核心语句。但我对其他可能性持开放态度,如 Ant contribembedded script ...随时发表您的想法...

(另见问题 Execute ANT task just if a condition is met )

最佳答案

即使绑定(bind)到 Ant 1.7.1,您也可以将 3 个 chk 目标合并为一个,请参阅 condition片段中的一部分。
由于 Ant 1.9.1(更好地使用 Ant 1.9.3,因为 Ant 1.9.1 see this answer for details 中的错误),可以添加 if and unless attributes在所有任务和嵌套元素上,因此不需要额外的目标,例如:

<project xmlns:if="ant:if" xmlns:unless="ant:unless">

<condition property="cloned" else="false">
<and>
<available file="${dir}/.git" type="dir" />
<resourcecount when="gt" count="0">
<fileset dir="${dir}/.git" />
</resourcecount>
</and>
</condition>

<exec executable="git" unless:true="${cloned}">
<arg value="clone" />
<arg value="${repo}" />
<arg value="${dir}" />
</exec>

<exec executable="git" dir="${dir}" if:true="${cloned}">
<arg value="fetch" />
</exec>

</project>

关于ant - 如果满足两个条件,则执行 Ant 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18097555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com