Ant构建

时间:2017-07-17 18:57:33

标签: java ant

更正一个:ant verifyParameters -DrestoreValue = false

Ex:ant verifyParameters -Drestoreval = false

如果参数拼写错误,我想抛出一个错误,即使我传递了多个参数,它应该为所有参数捕获并抛出错误。

2 个答案:

答案 0 :(得分:1)

无法检查所有错误拼写的参数名称,因为每个参数名称本身都是一个有效的参数。拼错的可能性太多了。

但是您可以检查,设置了正确的参数,如果它缺失则会失败。

这是一个例子。如果未设置参数default,主要目标check-parameter将受到依赖目标restoreValue的屏蔽,该目标将失败。

<project name="option-test" default="default">

  <!--
    This is the main target. It depends on target check-parameter which fails,
    if parameter restoreValue is not set.
  -->
  <target name="default" depends="check-parameter">
    <echo message="Start build ..." />
    <echo message="restoreValue = ${restoreValue}" />
  </target>

  <!--
    This helper target sets property parameterok to true, if restoreValue is set.
    And to false, otherwise.
  -->
  <target name="check-is-set">
    <condition property="parameterok">
      <isset property="restoreValue"/>
    </condition>
  </target>

  <!--
    This target depends on target check-is-set, which calculates the parameterok property.
    The unless attribute evaluates the parameterok property, so that the target body
    is only excuted, if paramterok=false.
    So the build fails only if parameter restoreValue is not set.
  -->
  <target name="check-parameter" unless="${parameterok}" depends="check-is-set">
    <fail message="Parameter restoreValue not set!" />
  </target>

答案 1 :(得分:0)

这实际上是可行的,但它有点hacky并且不是Ant的特色。

Ant可以访问属性sun.java.command中用户的被调用命令。如果正则表达式有效,可以创建一个根据需要验证命令的条件:

<fail>
    <condition>
        <or>
            <not>
                <matches
                    string="${sun.java.command}"
                    pattern=" -DrestoreValue[ =]"
                />
            </not>
            <matches
                string="${sun.java.command}"
                pattern=" -D.+ -D"
            />
        </or>
    </condition>
</fail>

如果您只是将它放在目标之外的Ant脚本中的任何位置,这应该有效,假设您希望每次都运行此检查。如果您只希望它针对某些目标运行,我建议创建一个仅包含此条件故障的新目标,并使相关目标依赖于它。