2009-06-23 60 views
0

在为SMS网关编写Java API时,我的ANT构建脚本存在一些问题。在Ant构建脚本中保存任务之间的信息

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

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

在SMS任务类execute方法执行任务时,从smsConfig类获取的值,并且短信发送成功地。

我想有是这样的:

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

后来,也许在不同的任务:

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

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

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

加入到明确基于反馈的前两个问题的问题:

我想保持配置去跟从发送短信的原因有两个的作用而分离的网关:

  1. 这些信息对于实际发送短信是必要的,但它是智力混乱 - 用户不关心短信是如何发送的,而仅仅是发送短信。
  2. 如果我将该值放入一个属性中,以避免重复实际值,但在发送短信的每个位置都必须重复该属性,则必须在发送SMS的任何地方重复该信息。

回答

0

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

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

0

除非我读你错了,你要的是一个属性:

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

然后您可以稍后引用属性,一拉:

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

这的确是个好主意,但在这种情况下,我并不在乎,因为我只关心我是否可以发送短信。 – tomjen 2009-06-23 14:55:45