有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将分号作为参数在Ant中传递

我想通过考试字符串作为我的Ant任务中的字符串参数:

<mytask param=";;;"/>
< Ant将分号视为一个特殊的符号,并提出一个错误

java.lang.IllegalArgumentException: Illegal group reference

我怎样才能逃脱;把它传给蚂蚁的符号

另外,我发现我不能通过{symbol,
所以我想知道在《蚂蚁》中逃避角色的常见方式是什么
我试过“$;$;$;”但这对我不起作用

更新: 示例代码:

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) 个答案

  1. # 1 楼答案

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

    <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>
    

    输出:

    echo
    param1: ;;;
    echo
    param2: {

    执行mytask任务时可能有问题吗

  2. # 2 楼答案

    关于向ant传递特殊字符的一般注意事项:

    我曾经向ant SQL任务传递密码,但在使用特殊字符时失败,例如@$#%^&;*

    切换&&;\amp成功了,但其他角色,如$#失败了

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

    所以,如果可能的话,不要把时间浪费在转义或切换你找到的任何特殊角色上——尝试使用更简单的搜索替换解决方案