我正在创建一个自定义 ant 任务,它根据用户收到的参数执行 IO 任务(如文件写入/追加)
我想编写任务,就好像在 ant 任务中使用它的开发人员使用-v
or-d
标志运行它,会输出更多,
我想知道核心蚂蚁任务是如何做到的。他们是在打印到控制台之前检查输出级别还是只是通过使用java.util.logging.Logger
按照本教程。
提炼 :
与任务适配器集成
我们班与 Ant 无关。它不扩展超类并且不实现接口。Ant是怎么知道集成的?通过命名约定:我们的类提供了一个带有签名 public void execute() 的方法。此类由 Ant 包装,
org.apache.tools.ant.TaskAdapter
这是一个任务,并使用反射来设置对项目的引用并调用execute()
方法。设置对项目的引用?可能很有趣。Project 类为我们提供了一些不错的功能:访问 Ant 的日志记录工具,获取和设置属性等等。所以我们尝试使用该类:
import org.apache.tools.ant.Project; public class HelloWorld { private Project project; public void setProject(Project proj) { project = proj; } public void execute() { String message = project.getProperty("ant.project.name"); project.log("Here is project '" + message + "'.", Project.MSG_INFO); } }
[...]