如果我有这样的Ant任务:
<target name="default">
<mkdir dir="${installer.config.installation.db.path}"/>
</target>
引用的属性未设置,我最终得到一个目录(在此'mkdir'示例中)使用文字名称(作为'basedir'的子目录)创建:
${installer.config.installation.db.path}
如果要求ANT解析属性但是失败,有没有办法强制执行失败?
答案 0 :(得分:1)
没有办法为所有属性执行此操作,但您可以检查单个属性:
<fail unless="installer.config.installation.db.path" />
以上将在未定义属性时中止脚本。但是当属性为空时它会成功!
答案 1 :(得分:0)
以下内容仅适用于ant项目级属性。 (需要groovy lib)
<?xml version="1.0" encoding="UTF-8"?>
<project name="strict me" default="default" basedir=".">
<target name="init-strict">
<script language="groovy">
import org.apache.tools.ant.PropertyHelper;
def antProject = project;
if( "#MyPropertyHelper"!=PropertyHelper.getPropertyHelper(antProject).toString() ) {
def myPropertyHelper = new PropertyHelper(){
@Delegate PropertyHelper delegate = PropertyHelper.getPropertyHelper(antProject);
public Object getProperty(String name){
Object v = delegate.getProperty(name);
if(v==null)throw new org.apache.tools.ant.BuildException("The property `$name` not defined");
return v;
}
public String toString() {return "#MyPropertyHelper"}
}
antProject.addReference("ant.PropertyHelper", myPropertyHelper);
}
</script>
</target>
<target name="default" depends="init-strict">
<mkdir dir="${installer.config.installation.db.path}"/>
</target>
</project>