对于构建脚本,我的部分过程是使用内部可执行文件部署文件。我们用许多参数来称呼它。
在我正在处理的应用程序上,我们发现需要添加一个参数。这不是追溯性地适用于我以前工作过的任何其他内容,因此我的想法是,如果相应的属性不为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,但无法找到如何执行此操作。
答案 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
仅适用于布尔值。话虽这么说,布尔值可以通过以下两种方式之一生成:显式true
或false
,或者使用表达式。表达式始终包含在${}
括号中。使用string::get-length()
应该是显而易见的。
将所有内容整合在一起,只有在指定的情况下才会包含参数。