我想传递“;;;” 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=";;;"/>
答案 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)
转义分号使用:;
请参阅以下完整列表: http://www.w3schools.com/TAGS/ref_ascii.asp
答案 2 :(得分:0)
关于将特殊字符传递给蚂蚁的一个注意事项:
我曾经将密码传递给ant SQL任务,但在特殊字符上失败,例如 @ $#%^&amp; *!
使用&amp; \ amp; 切换&amp; ,但其他字符如 $ 或#失败。
我最终直接在ant build文件中替换了密码变量字符串(使用任何搜索替换脚本,例如Linux的sed),而不是使用-D将参数发送到脚本。
因此,如果可能,请不要浪费时间逃避或切换您找到的任何特殊字符 - 尝试使用更简单的搜索替换解决方案。