Передайте точку с запятой в Ant как параметр - PullRequest
2 голосов
/ 18 октября 2011

Я хочу передать ";;;"строка как строковый параметр в моей задаче Ant:

<mytask param=";;;"/>

, но Ant рассматривает точку с запятой как специальный символ и вызывает ошибку

java.lang.IllegalArgumentException: Illegal group reference

как мне выйти;символ, чтобы передать его муравью?

ps также я обнаружил, что не могу передать {символ,
, поэтому мне интересно, как обычно экранировать символы в Ant?
Я пробовал "$; $; $;"но это не работает для меня

ОБНОВЛЕНИЕ: пример кода:

public class MyTask extends Task {
    private String value;
    public void setValue(String value) {
        this.value = value;
    }

    public void execute() {
        System.out.println(value);
    }
}

и задача муравья:

<taskdef name="mytask" classpath="build/lib/CustomTasks.jar"
   classname="MyTask"/>
<mytask value=";;;"/>

Ответы [ 3 ]

2 голосов
/ 18 октября 2011

У меня нет проблем с этим образцом:

<target name="test_passing_params">
    <antcall target="test_echo">
        <param name="param1" value=";;;"/>
        <param name="param2" value="{"/>
    </antcall>
</target>
<target name="test_echo">
    <echo>param1: ${param1}</echo>
    <echo>param2: ${param2}</echo>
</target>

Вывод:

эхоparam1: ;;;эхоparam2: {

Может быть проблема в реализации задачи mytask?

0 голосов
/ 29 мая 2017

Одна заметка о передаче специальных символов в ant в целом:

Я использовал для передачи пароля задачу Ant SQL, но она не удалась для специальных символов, таких как @ $ #% ^ & *!

Переключение & с & \ amp; сработало, но другие символы, такие как $ или # не удалось.

В итоге я заменил строку переменной пароля непосредственно внутри файла сборки ant (используя любой сценарий поиска-замены, такой как sed в Linux), вместо того, чтобы отправить параметр в сценарийиспользуя -D.

Поэтому, если возможно, не тратьте свое время на экранирование или переключение любого специального символа, который вы найдете, - попробуйте использовать более простое решение поиска-замены.

0 голосов
/ 18 октября 2011

чтобы не использовать точку с запятой: &#59;

См. Полный список по адресу: http://www.w3schools.com/TAGS/ref_ascii.asp

...