在Ant中传递分号作为参数

  • 本文关键字:参数 Ant java ant escaping
  • 更新时间 :
  • 英文 :


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

<mytask param=";;;"/>

但是Ant认为分号是一个特殊的符号,并引发一个错误

java.lang.IllegalArgumentException: Illegal group reference

我怎么能逃脱;符号传递给蚂蚁?

注。我还发现我不能传递{symbol,
所以我想知道在Ant中转义字符的常用方法是什么?
我试过"$;$;$;",但它不适合我

更新:示例代码:

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

and ant task:

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

我对这个样品没有任何问题:

<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:;;;
回声
参数2:{

mytask任务的执行是否存在问题?

转义分号使用:&#59;

完整列表见:http://www.w3schools.com/TAGS/ref_ascii.asp

一般情况下给ant传递特殊字符的注意事项:

我曾经传递一个密码给一个SQL任务,但它失败的特殊字符,如@$#%^&*!

&amp;切换&可以工作,但其他字符如$#失败。

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

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

相关内容

  • 没有找到相关文章

最新更新