输入

描述

允许用户在构建过程中通过提示输入进行交互。为此,它使用配置的 InputHandler

提示可以通过 message 属性设置,也可以作为嵌套在元素中的字符数据设置。

可以选择通过 validargs 属性定义一组有效的输入参数。Input 任务将不接受与预定义参数不匹配的值。

可以选择从用户输入的值创建属性。然后可以在后续构建运行中使用此属性。Input 然后表现为 属性任务,这意味着不能覆盖现有属性。从 Apache Ant 1.6 开始,如果任务要设置的属性已在项目中设置(并且任务不会有任何影响),则 <input> 不会提示输入。

历史上,关于此任务的一个常见抱怨是它将字符回显到控制台,这是一个严重的安全性缺陷,我们必须立即修复它,等等。这个问题是由于早期版本的 Java 缺乏处理安全控制台输入的(完全功能的)工具。在 Java 6 中,Java API 中的这个缺陷得到了解决,Ant 版本 1.7.1 和 1.8 添加了对 Java 6 安全控制台输入功能的支持(参见 处理程序类型)。

IDE 行为取决于 IDE:有些挂起等待输入,有些允许您输入。对于这种情况,将密码放在(安全的)属性文件中,并在 input 任务之前加载。

参数

属性 描述 必需
message 在构建运行期间显示给用户的消息。
validargs 包含有效输入参数的逗号分隔字符串。如果设置,input 任务将拒绝此处未定义的任何输入。输入与 validargs 的比较区分大小写。如果您希望接受 aA,则需要在 validargs 中定义这两个参数。
addproperty 要从输入创建的属性的名称。行为等同于 属性任务,这意味着不能覆盖现有属性。
defaultvalue 定义要从输入创建的属性的默认值。如果未收到输入,则属性值将设置为默认值。

作为嵌套元素指定的参数

处理程序

从 Ant 1.7 开始,可以使用嵌套的 <handler> 元素来指定 InputHandler,以便不同的 Input 任务可以使用不同的 InputHandler

属性 描述 必需
type defaultpropertyfilegreedysecure 之一(从 Ant 1.8 开始)。 其中之一
refid 对项目中其他地方定义的 InputHandler 的引用。
classname InputHandler 子类的名称。
classpath classname 一起使用的类路径。
classpathref 要与 classname 一起使用的类路径的 refid。
loaderref 要与 classname 一起使用的类加载器的 refid。

类路径也可以通过一个或多个嵌套的 <classpath> 元素来指定。

示例

使用 默认 InputHandler 时,暂停构建运行,直到按下回车键,具体行为由您使用的 InputHandler 实现定义。

<input/>

显示消息 按回车键继续... 并暂停构建运行,直到按下回车键(同样,具体行为取决于实现)。

<input>Press Return key to continue...</input>

显示消息 按回车键继续... 并暂停构建运行,直到按下回车键(见上文)。

<input message="Press Return key to continue..."/>

显示消息 所有数据将从 DB 中删除,继续 (y/n)? 并要求输入 y 以继续构建,或输入 n 以退出构建,并显示以下消息 构建被用户中止。

<input message="All data is going to be deleted from DB continue (y/n)?"
       validargs="y,n"
       addproperty="do.delete"/>
<condition property="do.abort">
  <equals arg1="n" arg2="${do.delete}"/>
</condition>
<fail if="do.abort">Build aborted by user.</fail>

显示消息 请输入 db-username: 并将属性 db.user 设置为用户输入的值。

<input message="Please enter db-username:"
       addproperty="db.user"/>

与上面相同,但如果用户未输入任何值(只是按了 回车),则将 db.user 设置为值 Scott-Tiger

<input message="Please enter db-username:"
       addproperty="db.user"
       defaultvalue="Scott-Tiger"/>