【问题标题】:Is there a "strict mode" for Apache Ant?Apache Ant 有“严格模式”吗?
【发布时间】:2012-12-03 16:51:07
【问题描述】:

如果我有这样的 Ant 任务:

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

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

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

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

【问题讨论】:

    标签: ant properties strict


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      以下内容仅适用于 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>
      

      【讨论】:

        猜你喜欢
        • 2015-06-25
        • 1970-01-01
        • 1970-01-01
        • 2016-10-28
        • 2012-03-05
        • 2014-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多