一个 ArgumentProcessor
是一个命令行参数解析器,它在构建文件解析之前和之后被调用。第三方库可以通过它自定义命令行参数,从而修改 Ant 的行为。
每次 Ant 解析到未知参数时,都会调用 ArgumentProcessor
。 ArgumentProcessor
不会优先于 Ant 解析已支持的选项。因此,建议第三方 ArgumentProcessor
实现选择足够具体的参数名称,例如避免使用单个字母作为参数。
它在不同的阶段被调用,因此可以实现不同的行为。它在所有参数解析完成后被调用,在项目配置之前(构建文件解析之前)被调用,以及在项目配置之后被调用。一些需要实现的方法会返回一个布尔值:如果返回 true
,Ant 将立即终止,不会报错。
由于在所有这些阶段都被调用,ArgumentProcessor
可以只打印一些特定的系统属性并退出(例如 -diagnose),或者在解析后打印项目的一些特定属性并退出(例如 -projectHelp),或者只在项目上设置一些自定义属性并继续运行。
首先,ArgumentProcessor
必须是 org.apache.tools.ant.ArgumentProcessor
的实现。
然后,声明它:创建一个名为 META-INF/services/org.apache.tools.ant.ArgumentProcessor 的文件,其中只包含一行,即实现类的完全限定名。这个文件以及实现类需要在 Ant 的类路径中找到。