Как мне прочитать многострочное значение, используя задачу Ant 'input'? - PullRequest
3 голосов
/ 09 апреля 2009

Кто-нибудь знает, как я могу ввести многострочное значение в сценарии Ant? Я запрашиваю у пользователя комментарий коммитера Subversion, используя задачу ввода , и я хотел бы иметь возможность поддерживать несколько строк текста.

Я запускаю автономную версию Ant в командной строке Windows.

Я думал, что смогу выполнить поиск и замену для \ n, но я не вижу простого способа заменить значение свойства на значение свойства в Ant. Похоже, мне нужно написать файл, заменить в файле , а затем загрузить файл в другое свойство. Я не хочу этого так сильно.

1 Ответ

5 голосов
/ 10 апреля 2009

Я не уверен на 100% по этому поводу, но я взглянул на исходный код Ant, и он просто выполняет readLine ():

Из /org/apache/tools/ant/input/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, как описано в документации . Лицензия Apache позволяет вам в основном копировать и вставлять приведенный выше код в качестве отправной точки.
  • Если вы используете Ant 1.6 или более раннюю версию, просто создайте свою собственную задачу MultiLineInput. Вы можете расширить существующий класс Input и просто прочитать несколько строк.

В любом случае вам нужно будет решить, как пользователь указывает «Я закончил». Вы можете использовать пустую строку или точку или что-то еще.

Удачи!

P.S. Когда я выполнил поиск в Google по запросу «многострочный ввод муравья», эта страница стала первым хитом :-). Впечатляет вопрос, который был задан менее часа назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...