在 Ant 中传递分号作为参数

发布于 2024-12-10 09:27:15 字数 733 浏览 0 评论 0原文

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

<mytask param=";;;"/>

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

java.lang.IllegalArgumentException: Illegal group reference

我该如何转义 ;符号将其传递给 Ant?

ps 我还发现我无法传递 { 符号,
所以我想知道 Ant 中转义字符的常用方法是什么?
我试过“$;$;$;”但它对我不起作用

更新: 示例代码:

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

    public void execute() {
        System.out.println(value);
    }
}

和ant任务:

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

I want to pass ";;;" string as a string parameter in my Ant task:

<mytask param=";;;"/>

but Ant consider semicolon as a special symbol and raises an error

java.lang.IllegalArgumentException: Illegal group reference

how can I escape ; symbol to pass it to Ant?

p.s. also I found that I can't pass { symbol,
so I wonder what's the common way to escape characters in Ant?
I've tried "$;$;$;" but it's not working for me

UPDATE:
sample code:

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=";;;"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

世态炎凉 2024-12-17 09:27:15

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

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

输出:

回声
参数1:;;;
回声
参数2:{

执行 mytask 任务时可能出现问题?

I have not any problem with this sample:

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

Output:

echo
param1: ;;;
echo
param2: {

May be problem in implementation of mytask task?

难理解 2024-12-17 09:27:15

转义分号使用:;

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

to escape semicolon use: ;

Refer to for complete list at:
http://www.w3schools.com/TAGS/ref_ascii.asp

揽月 2024-12-17 09:27:15

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

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

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

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

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

One note on passing special characters to ant in general:

I used to pass a password to ant SQL task but it failed on special characters such as @$#%^&*!

Switching & with &\amp; worked, but the other characters such as $ or # failed.

I ended up with replacing the password variable string directly inside the ant build file (using any search-replace script such as Linux's sed), rather than sending the parameter to the script using -D.

So if possible, don't waste your time on escaping or switching any special character you find - try to use an easier search-replace solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文