在路径中使用大写和小写字符

  • 本文关键字:字符 路径 java linux ant
  • 更新时间 :
  • 英文 :


我有一个ant目标,它将文件从一个位置复制到另一个位置,假设它在build.xml中定义为:

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

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

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

在some-component-abc中没有大写的ABC…

此路径在Windows(7)中可以解析,但在Linux中不能解析?

为什么?

我会弄清楚怎么处理它,只是想了解一下为什么功能不同。

根据以下文章:https://ubuntuforums.org/showthread.php?t=1227827Linux是用区分大小写的C语言编写的。

Ant并没有对路径做任何花哨的操作——它只是向下委托给底层文件系统。Windows的文件系统不区分大小写,而我能想到的任何linux文件系统都是。因此,在windows中,some-component-abcsome-component-ABC是同一个目录,而在linux中它们不是。

正如其他人所提到的,在大多数情况下,Ant只是为所有内容存储字符串,并且在实际执行文件系统操作时依赖于操作系统的文件系统,因此在Linux和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

另一种方法(将返回相对于文件集的dir属性的类似路径的字符串):

<project>
    <fileset dir="${basedir}" includes="file" casesensitive="false" id="filepath" />
    <property name="file" refid="filepath" />
    <echo message="${file}" />
</project>
输出:

 [echo] FILE

相关内容

  • 没有找到相关文章

最新更新