在Ant构建脚本中的任务之间保存信息

时间:2009-06-23 14:21:30

标签: java ant

在为SMS网关编写Java API时,我的ANT构建脚本遇到了一些问题。

基本上我想要做的是只能在构建文件中的一个位置指定服务的用户名和密码,但能够从构建文件中的任何位置调用发送SMS的任务。我现在拥有的是:

<smsConfig password="${sms.password}" user="${sms.user}">
  <sms msg="England prevails" to="XXXXXXXX"/>
</smsConfig>

执行任务时,sms任务类中的execute方法从smsConfig类中获取值,并且已成功发送SMS。

我想要的是:

<smsConfig  password="${sms.password}" user="${sms.user}"/>

稍后,也许在另一项任务中:

<sms msg="England prevails" to="XXXXXXXX"/>

不幸的是,如果我这样做,就无法再访问存储在SmsConfig类中的静态值(我得到一个空指针异常,即使它们在SmsConfig类中的execute方法运行时有一个值)。

那么我如何(以及在​​何处)将值存储在smsConfig任务和任何短信任务之间?

添加以根据前两个问题的反馈明确问题:

我希望保持配置与网关通信,与发送短信的行为分开,原因有两个:

  1. 这些信息对于实际发送短信是必要的,但它是精神混乱的 - 用户不关心如何发送短信,只是它是。
  2. 如果我将值放入一个避免重复实际值的属性中,那么必须在发送SMS的任何地方重复这些信息,但是在我发送短信的每个地方仍然需要重复该属性。

2 个答案:

答案 0 :(得分:0)

听起来我应该创建一个发送短信的目标,然后您可以使用AntCall task随时调用它,并使用适当的属性。

不幸的是,smsConfigsms任务在这里做了什么并不完全清楚。我真的希望sms任务包含自己的配置(可能作为嵌套元素),而不是smsConfig中的嵌套元素。

答案 1 :(得分:0)

除非我读错了,否则你想要的是财产:

<property name="smsuser"
 value="${sms.user}"/>

然后您可以稍后引用该属性,la:

<sms msg="England prevails" to="${smsuser}"/>