我有一个蚂蚁目标,可以将文件从一个位置复制到另一个位置,比如它在build.xml
中定义为:
${project}/some-component-ABC/lib/whatever.jar
但是在文件系统上,实际路径是
${project}/some-component-abc/lib/whatever.jar
在苍蝇系统的某个组件abc中没有大写ABC ......
此路径将在Windows(7)中解析,但在Linux中不会解决?
为什么?
我会弄清楚如何处理它,只是想要一些背景为何功能差异。
答案 0 :(得分:1)
根据以下文章:https://ubuntuforums.org/showthread.php?t=1227827 Linux是用C语言编写的,区分大小写。它可以加快排序速度。
答案 1 :(得分:1)
Ant不会对路径做任何事情 - 它只是委托给底层文件系统。 Windows的文件系统不区分大小写,而我能想到的任何linux文件系统都是。因此,在Windows中,some-component-abc
和some-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