Ant 副本无法解释 %2527

Ant copy cannot interpret %2527

我处于以下情况:我正在使用 ant 将某些 salesforce files 迁移到其他 salesforce 环境。业务用户还在 Salesforce开发,这就是为什么有时他们在名称中使用特殊字符的原因。我有一个名为 Contracts_Product__c-Contract%27s Option Layout.layout (Mind the %27 in it) 的文件。这就是 Salesforce 将此文件发送给我的方式,所以我对此没有任何影响。

现在在我的脚本中的某处,我需要将此文件复制到另一个位置,所以我使用以下命令:

<copy file="${svn.sources}/${object-test}" tofile="${release.sources}/${object-test}"/>

object-test 属性 的内容是 /home/../layouts/Contracts_Product__c-Contract%2527s%20Option%20Layout.layout,这通常正是我需要的文件名 (%2527 decodes to %27) 但是 ant 抱怨找不到文件。

关于如何在不更改源文件名的情况下解决此问题的任何提示?

我自己找到了解决方案。通过在将路径传递给 ant-copy 命令之前将一些 javascript 添加到 URL-decode 路径,ant 接受它并成功复制文件,包括输出文件名中的 %27。

需要的代码:

<script language="javascript">
    <![CDATA[
        var urltodecode = project.getProperty("object");                                                    
        var decodedurl = decodeURIComponent(urltodecode);

        // Set a new property which could be retrieved by the ant script
        project.setProperty("objectDecoded", decodedurl);
    ]]>
</script>