我想在我的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
任务的执行是否存在问题?
转义分号使用:;
完整列表见:http://www.w3schools.com/TAGS/ref_ascii.asp
一般情况下给ant传递特殊字符的注意事项:
我曾经传递一个密码给一个SQL任务,但它失败的特殊字符,如@$#%^&*!
用&切换&可以工作,但其他字符如$或#失败。
我最终直接在ant构建文件中替换密码变量字符串(使用任何搜索替换脚本,如Linux的sed),而不是使用-D将参数发送到脚本。
因此,如果可能的话,不要浪费时间转义或切换您找到的任何特殊字符—尝试使用更简单的搜索替换解决方案。