我正在开发一些所有需要初始化相同对象的自定义ant任务.我想在init()方法中从Task扩展的公共超类中初始化这些对象.但是我从ant任务的生命周期中看到,在设置任务子元素和属性之前调用init().因此,如果我正确读取,初始化这些对象所需的所有数据在init()期间都不可用.
那么,为什么在这一点调用init()?你甚至知道你可以在init()中使用什么?它可以用于什么?
(还有一些其他方法可以依赖于在execute()之前调用,但在我的数据可用之后?)
最好的指南是查看 Ant 附带的任务的源代码。似乎有 3 个主要用例init():
Sync任务将其大部分工作委托给底层对象,并将部分工作传递setXYZ()给该委托。该委托的实例化和预配置必须在任务上设置任何属性之前进行。SSH初始化其默认值。knownHosts此外,该Project对象已通过init()调用注入到任务中,因此任务可以查看该对象。可以想象,上述所有操作都可以在任务构造函数内完成,但是使用显式init()方法的使用符合 Ant 任务设计。
execute()至于问题的第二部分,不,在设置和调用属性之间没有调用生命周期挂钩。你必须在其内部做到这一点execute()。