如果property不为null或为空,则在NAnt可执行调用中包含参数

时间:2017-11-17 15:53:32

标签: conditional nant isnullorempty

对于构建脚本,我的部分过程是使用内部可执行文件部署文件。我们用许多参数来称呼它。

在我正在处理的应用程序上,我们发现需要添加一个参数。这不是追溯性地适用于我以前工作过的任何其他内容,因此我的想法是,如果相应的属性不为null或为空,我只会包含新参数。

相关的NAnt致电:

<property name="deploy.NewArg" value="" />
<echo message="deploy.NewArg = ${deploy.NewArg}" />

<exec program="C:\Deploy\MyAwesomeDeployProgram.exe">
    <arg value="AppTitle=${deploy.AppTitle}" />
    <arg value="Environment=${deploy.Environment}" />
    <!-- Here's the problem argument... -->
    <arg value="MyNewProperty=${deploy.NewArg}" if="${deploy.NewArg}" />
</exec>

我所拥有的原因不起作用,是因为新if标记上的<arg>子句 - deploy.NewArg字符串没有转换为布尔语句。

问题:我可以通过什么方式执行&#34; Null或Empty&#34;检查<arg if>参数?如上所述,如果MyNewProperty=...不是任何内容或空字符串,我希望添加deploy.NewArg参数。

我检查了许多其他StackOverflow问题,以及official NAnt arg tag documentation,但无法找到如何执行此操作。

1 个答案:

答案 0 :(得分:1)

事实证明,我需要回到基础,并查看我的一些基本原理和功能。做一个&#39;的方法是空的&#39;检查房产如下:

<exec program="C:\Deploy\MyAwesomeDeployProgram.exe">
    <!-- Other args... -->
    <arg value="MyNewProperty=${deploy.NewArg}" if=${string::get-length(deploy.NewArg) > 0}" />
</exec>

对于尚未完成研究的人,if仅适用于布尔值。话虽这么说,布尔值可以通过以下两种方式之一生成:显式truefalse,或者使用表达式。表达式始终包含在${}括号中。使用string::get-length()应该是显而易见的。

将所有内容整合在一起,只有在指定的情况下才会包含参数。