ant大写与路径中的小写字符

时间:2016-10-24 18:23:17

标签: java linux ant

我有一个蚂蚁目标,可以将文件从一个位置复制到另一个位置,比如它在build.xml中定义为:

 ${project}/some-component-ABC/lib/whatever.jar

但是在文件系统上,实际路径是

 ${project}/some-component-abc/lib/whatever.jar

在苍蝇系统的某个组件abc中没有大写ABC ......

此路径将在Windows(7)中解析,但在Linux中不会解决?

为什么?

我会弄清楚如何处理它,只是想要一些背景为何功能差异。

3 个答案:

答案 0 :(得分:1)

根据以下文章:https://ubuntuforums.org/showthread.php?t=1227827 Linux是用C语言编写的,区分大小写。它可以加快排序速度。

答案 1 :(得分:1)

Ant不会对路径做任何事情 - 它只是委托给底层文件系统。 Windows的文件系统不区分大小写,而我能想到的任何linux文件系统都是。因此,在Windows中,some-component-abcsome-component-ABC是相同的目录,而在linux中它们不是。

答案 2 :(得分:1)

正如其他人所提到的,在大多数情况下,Ant只是为所有内容存储字符串,并且在实际执行文件系统操作时依赖于操作系统的文件系统,因此在运行脚本时会遇到这样的差异。 Linux vs Windows。

但是,Ant确实具有操作类似路径的字符串的任务,并且这些任务可以在使用之前用于修饰对文件的引用。这是一个例子:

~/test $ ls -1
build.xml
FILE

的build.xml:

<project>
    <pathconvert property="file">
        <fileset dir="${basedir}" includes="file" casesensitive="false" />
    </pathconvert>

    <echo message="${file}" />
</project>

输出:

[echo] /home/me/test/FILE

替代方法(将返回相对于文件集&#39; s dir属性的类似路径的字符串):

<project>
    <fileset dir="${basedir}" includes="file" casesensitive="false" id="filepath" />

    <property name="file" refid="filepath" />

    <echo message="${file}" />
</project>

输出:

 [echo] FILE