1

如果我有这样的 Ant 任务:

<target name="default">
  <mkdir dir="${installer.config.installation.db.path}"/>
</target>

并且没有设置引用的属性,我最终创建了一个目录(在这个 'mkdir' 示例中),其字面名称为(作为 'basedir' 的子目录):

${installer.config.installation.db.path}

如果要求 ANT 解析属性但失败,有什么方法可以强制失败?

4

2 回答 2

1

无法对所有属性执行此操作,但您可以检查单个属性:

 <fail unless="installer.config.installation.db.path" />

当未定义属性时,上面将中止脚本。但是,当属性为空时它会成功!

于 2012-12-03T16:57:18.290 回答
0

以下仅适用于 ant 项目级属性。(需要 groovy 库)

<?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>
于 2016-07-18T15:07:30.797 回答