除非属性不考虑属性值

时间:2016-11-12 12:26:23

标签: ant ivy qaf

我使用QAF和ant作为构建脚本,IVY作为依赖管理工具。为了自动ivy安装,构建脚本具有以下ant目标:

<target name="download-ivy" unless="skip.download">
    <mkdir dir="${ivy.jar.dir}" />
    <!-- download Ivy from web site so that it can be used even without any 
        special installation -->
    <echo message="installing ivy..." />
    <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" dest="${ivy.jar.file}" usetimestamp="true" />
</target>

有一些build.properties,其中属性skip.download通过提供相应的值truefalse来提供下载常春藤ON或OFF。

现在问题是我在build.properties skip.download中为true提供的任何值,它认为它#not working skip.download=false ,并始终执行目标(下载常春藤)。

<target name="download-ivy" unless="offline">

    <mkdir dir="${ivy.jar.dir}"/>
    <!-- download Ivy from web site so that it can be used even without any special installation -->
    <get src="https://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" 
         dest="${ivy.jar.file}" usetimestamp="true"/>
</target>

我提到了IVY + Ant documentation,它具有类似的后续目标,具有不同的属性名称。

display:none

我找到了解决方法,因为解决方法需要删除或评论该属性才能跳过下载。

  

有没有办法让属性值正常工作,除非   目标中的属性?

1 个答案:

答案 0 :(得分:1)

我使用以下目标来安装常春藤。请注意它如何使用可用任务来确定是否已安装ivy:

<available classname="org.apache.ivy.Main" property="ivy.installed"/>

<target name="install-ivy" description="Install ivy" unless="ivy.installed">
    <mkdir dir="${user.home}/.ant/lib"/>
    <get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"/>
    <fail message="Ivy has been installed. Run the build again"/>
</target>

注意:

  • 目录“$ HOME / .ant / lib”是常春藤用于加载第三方扩展程序的标准位置之一。