在Ant中传递分号作为参数

时间:2011-10-18 08:43:54

标签: java ant escaping

我想传递“;;;” string作为我的Ant任务中的字符串参数:

<mytask param=";;;"/>

但Ant将分号视为特殊符号并引发错误

java.lang.IllegalArgumentException: Illegal group reference

我怎么逃避;将它传递给Ant的符号?

P.S。我也发现我无法通过{符号,
所以我想知道在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 个答案:

答案 0 :(得分:2)

我对此示例没有任何问题:

<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任务可能会出现问题吗?

答案 1 :(得分:0)

转义分号使用:&#59;

请参阅以下完整列表: http://www.w3schools.com/TAGS/ref_ascii.asp

答案 2 :(得分:0)

关于将特殊字符传递给蚂蚁的一个注意事项:

我曾经将密码传递给ant SQL任务,但在特殊字符上失败,例如 @ $#%^&amp; *!

使用&amp; \ amp; 切换&amp; ,但其他字符如 $ 失败。

我最终直接在ant build文件中替换了密码变量字符串(使用任何搜索替换脚本,例如Linux的sed),而不是使用-D将参数发送到脚本。

因此,如果可能,请不要浪费时间逃避或切换您找到的任何特殊字符 - 尝试使用更简单的搜索替换解决方案。