2014-02-25 53 views
-1

專家,使用ANT扭轉特性值,那麼文件中替換

  1. 在我的計劃中,有屬性文件,JSP文件和* .java文件。

  2. 這些文件將對某些操作使用「域名」。 (我使用「域名」是因爲它看起來像一個域名,例如:abc.abcnet.com或abc.com) 動作示例是它將檢索此「域名」並查找LDAP結構

  3. 按照步驟2的例子,你可能知道在LDAP結構,它通常反向域名(例如:OU = COM,OU = abcnet,CN = ABC ...)

  4. 我的程序會被部署到不同的服務器,並且每個服務器都有不同的LDAP節點名稱每次當我將我的程序部署到不同的服務器時,我需要手動更新prope rties文件,JSP文件,並用正確的「域名」的java文件

  5. 而我的客戶要我自動化部署任務,他們希望在一個文件中的「域名」只填寫(例如:每次他們部署我的代碼之前,他們只編輯屬性文件,設置Key = abc.abcnet.com)

  6. 因此我想知道是否有可能讓我的客戶只修改屬性文件我的ant任務可以讀取key的值(例如:abc.abcnet.com),然後將其逆轉。

  7. 並使用此反轉字符串來替換我的程序文件。

我搜索,看起來像JavaScript提供反向功能,但它不能直接讀取本地文件。

我希望這次我解釋清楚一點。

任何想法都很感激。

問候

+0

多次讀取,但不清楚是什麼你正在嘗試做的。 – Sanjeev

+0

到目前爲止您嘗試了什麼?以及它如何與JavaScript相關? – vanje

+0

專家,對不起,我是ANT任務開發新手。 – user3153661

回答

0

試試這個,它使用Groovy中的腳本的一部分 - 它可以替代基於Ant文檔其他語言。我已更新解決方案,以包括設置新的屬性,,具有反向值。

<project name="StackOverflow" basedir="." default="reverse"> 

     <target name="reverse"> 
      <loadproperties srcFile="domain.properties"/> 
      <!--<echo>${key}</echo> --> 
      <script language="groovy"> 
       def components = key.split('\\.').reverse().join('.') 
       def project = self.project 
       project.setProperty('domain', components) 
      </script> 
    <echo>Reversed domain=${domain}</echo> 
</target> 

</project> 

這裏

Buildfile: c:\GroovyStuff\StackOverflowQuestion\reverse.xml 

reverse: 
    [echo] Reversed domain=com.abcnet.abc 

BUILD SUCCESSFUL 

輸出和屬性文件 - domain.properties

key=abc.abcnet.com 
+0

Hi Mikemil,我測試了代碼: \t \t \t 「反向域名= $ {標識符衝」 並報告錯誤: javax.script.ScriptException :javax.script.ScriptException:groovy.lang.MissingPropertyException:沒有這樣的屬性:類的關鍵:Script1 任何想法我做錯了什麼? – user3153661

+0

您是否從響應剪切/粘貼我的副本?如果未定義密鑰,則取消註釋標記或確保標記用於將屬性文件加載到屬性中。我提供的目標依賴於loadproperties標籤來讀取domain.properties文件,它將從屬性文件中的每一行創建一個屬性。 – mikemil

+0

另一個評論 - 要使用Groovy,我將我的groovy jar(groovy-all-2.2.1-indy.jar)放到我的ANT_HOME \ lib文件夾中。 – mikemil