允许用户在构建过程中通过提示输入进行交互。为此,它使用配置的 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 的比较区分大小写。如果您希望接受 a和 A,则需要在 validargs 中定义这两个参数。 |
否 |
addproperty | 要从输入创建的属性的名称。行为等同于 属性任务,这意味着不能覆盖现有属性。 | 否 |
defaultvalue | 定义要从输入创建的属性的默认值。如果未收到输入,则属性值将设置为默认值。 | 否 |
从 Ant 1.7 开始,可以使用嵌套的 <handler>
元素来指定 InputHandler
,以便不同的 Input
任务可以使用不同的 InputHandler
。
属性 | 描述 | 必需 |
---|---|---|
type | default 、propertyfile 、greedy 或 secure 之一(从 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"/>