命令行处理器插件:ArgumentProcessor

什么是 ArgumentProcessor?

一个 ArgumentProcessor 是一个命令行参数解析器,它在构建文件解析之前和之后被调用。第三方库可以通过它自定义命令行参数,从而修改 Ant 的行为。

每次 Ant 解析到未知参数时,都会调用 ArgumentProcessorArgumentProcessor 不会优先于 Ant 解析已支持的选项。因此,建议第三方 ArgumentProcessor 实现选择足够具体的参数名称,例如避免使用单个字母作为参数。

它在不同的阶段被调用,因此可以实现不同的行为。它在所有参数解析完成后被调用,在项目配置之前(构建文件解析之前)被调用,以及在项目配置之后被调用。一些需要实现的方法会返回一个布尔值:如果返回 true,Ant 将立即终止,不会报错。

由于在所有这些阶段都被调用,ArgumentProcessor 可以只打印一些特定的系统属性并退出(例如 -diagnose),或者在解析后打印项目的一些特定属性并退出(例如 -projectHelp),或者只在项目上设置一些自定义属性并继续运行。

如何注册自己的 ArgumentProcessor

首先,ArgumentProcessor 必须是 org.apache.tools.ant.ArgumentProcessor 的实现。

然后,声明它:创建一个名为 META-INF/services/org.apache.tools.ant.ArgumentProcessor 的文件,其中只包含一行,即实现类的完全限定名。这个文件以及实现类需要在 Ant 的类路径中找到。