我有一个包含嵌入式javascript的ant任务。基于我在javascript中运行的一些逻辑,我想让目标失败或成功:
<target name="analyze">
<script language="javascript">
<![CDATA[
importClass(java.io.File);
importClass(java.io.FileReader)
importClass(java.io.BufferedReader)
String.prototype.startsWith = function(str) {
return (this.indexOf(str) === 0);
}
String.prototype.endsWith = function(str) {
var lastIndex = this.lastIndexOf(str);
return (lastIndex != -1) && (lastIndex + str.length == this.length);
}
//setup the source directory
srcDir = project.getProperty("MY_HOME") + "/foo/src";
if(srcDir.startsWith("/foo") {
//TARGET SHOULD PASS
} else {
//TARGET SHOULD FAIL
}
]]>
</script>
</target>
答案 0 :(得分:9)
你可以通过Exit API让Ant退出,但这会抛出一个构建异常,这将导致一个混乱的堆栈跟踪。最干净的方法是在javascript中设置属性,然后使用fail
task对其进行测试:
使用Javascript:
project.setProperty( "javascript.fail.message", "There was a problem" );
Ant,脚本任务后立即执行:
<fail if="javascript.fail.message" message="${javascript.fail.message}" />
答案 1 :(得分:3)
另一个目标:
<target name="failme"><fail/></target>
脚本:
`project.executeTarget("failme");`
未经测试。 Documentation
答案 2 :(得分:1)
您可以在一个JavaScript块中完全完成它。
<script language="javascript">
<![CDATA[
failTask = project.createTask("fail");
failTask.setMessage("I have failed");
failTask.perform();
]]>
</script>