2009-04-09 36 views
3

任何人都知道我可以在Ant腳本中輸入多行值嗎?我正在使用input task提示用戶使用Subversion提交評論,我希望能夠支持多行文本。如何使用Ant'input'任務讀取多行值?

我在Windows命令提示符下運行Ant的獨立版本。

我想我可以做一個搜索並替換\ n,但我看不到任何簡單的方法來做從屬性值到屬性值的替換。它看起來像我必須寫一個文件,replace in the file,然後將文件加載到另一個屬性。我不想那麼糟糕。

回答

5

我不是100%肯定態度,但我看了看螞蟻的源代碼,它只是做了的readLine():

從/組織/阿帕奇/工具/ ANT /輸入/ DefaultInputHandler.java:

/** 
* Prompts and requests input. May loop until a valid input has 
* been entered. 
* @param request the request to handle 
* @throws BuildException if not possible to read from console 
*/ 
public void handleInput(InputRequest request) throws BuildException { 
    String prompt = getPrompt(request); 
    BufferedReader r = null; 
    try { 
     r = new BufferedReader(new InputStreamReader(getInputStream())); 
     do { 
      System.err.println(prompt); 
      System.err.flush(); 
      try { 
       String input = r.readLine(); 
       request.setInput(input); 
      } catch (IOException e) { 
       throw new BuildException("Failed to read input from" 
             + " Console.", e); 
      } 
     } while (!request.isInputValid()); 
    } finally { 
     if (r != null) { 
      try { 
       r.close(); 
      } catch (IOException e) { 
       throw new BuildException("Failed to close input.", e); 
      } 
     } 
    } 
} 

這裏是如果我是你,我會做什麼:

  • 如果您使用Ant 1.7,然後嘗試實現自己的InputHandler,如documentation描述。 Apache許可證允許您基本上覆制並粘貼上述代碼作爲起點。
  • 如果您使用的是Ant 1.6或更早版本,那麼只需創建您自己的MultiLineInput任務。您可以擴展現有的Input類並只讀多行。

無論哪種情況,您都需要決定用戶如何表示「我完成了」。您可以使用空白行或句點或其他內容。

祝你好運!

P.S.當我做了一個「螞蟻多行輸入」的谷歌搜索,這個頁面是第一次擊中:-)。對於不到一個小時前問過的問題來說,這是相當不錯的。

+0

感謝您的源代碼。 – 2009-04-09 21:01:34

相關問題