2009-06-23 59 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