0

我一直在尝试编写一个 Ant 任务来使用 apply 任务在我的项目中“编译”Sass 脚本,但我一直收到“没有这样的文件或目录”错误。我认为这可能是由构建路径中的空格引起的,所以我经历了移动项目的麻烦,结果发现 Ant 在返回路径时似乎省略了文件集的根目录。这是目标的样子:

<target name="sass-compile" depends="properties">
    <apply executable="sass">
        <srcfile />
        <targetfile />

        <fileset dir="${project.src.dir}" includes="**/*.scss"  />
        <globmapper from="*.scss" to="*.css" />
    </apply>
</target>

为了帮助排除故障,我将可执行文件从 sass 切换到 echo,我注意到映射器正在像这样转换路径......

/Users/me/Documents/Programming/workspace/Project/ src /java/com/proj/web/page/template/Template.scss

……进入这个……

/Users/me/Documents/Programming/workspace/Project/java/com/proj/web/page/template/Template.css

请注意,目标文件路径中缺少 src 目录。我在这里看到错误还是以某种方式预期?我很想知道这里发生了什么。我也尝试过使用正则表达式映射器和带有替换字符串的过滤器映射器。结果是一样的。

我正在运行 Ant 1.7.1,它与我在 Mac 上运行的 Eclipse Helios 捆绑在一起。我还在 Mac 和 Linux 上尝试了 Ant 1.8。没有任何效果。有没有人有任何想法?

4

2 回答 2

0

看起来映射器正在处理 的内容${project.src.dir},不包括文件夹本身。

src您可以尝试指定in的父文件夹${project.src.dir},比如说${basedir} 看看它是否会产生所需的结果吗?

于 2011-02-01T07:06:32.390 回答
0

这是正常行为。映射器使用相对路径,而不是绝对路径。该路径将相对于工作(可能是基本)目录,在您的情况下,该目录是该目录的父src目录。

apply任务(glob)mapper 提供相对于其dest属性中指定的目录的路径:

单个映射器指定相对于 dest 属性的目标文件以进行依赖性检查。如果指定了 dest 属性,它将用作解析映射器返回的相对路径名的基本目录。至少需要一个文件集或文件列表。

使用的相对路径源自指定的文件集,因此它们不包含前导src目录。

想到的选项是:

  • 使用basedir项目的而不是project.src.dir(可能工作)
  • <apply dest="src" ...使用(更好)指定目录
于 2011-02-01T07:24:26.170 回答