Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在eclipse中,使用ANT任务执行Sass。为什么我要设置';可执行文件';至';sass.bat';而不是';sass';?_Ruby_Eclipse_Batch File_Ant_Sass - Fatal编程技术网

Ruby 在eclipse中,使用ANT任务执行Sass。为什么我要设置';可执行文件';至';sass.bat';而不是';sass';?

Ruby 在eclipse中,使用ANT任务执行Sass。为什么我要设置';可执行文件';至';sass.bat';而不是';sass';?,ruby,eclipse,batch-file,ant,sass,Ruby,Eclipse,Batch File,Ant,Sass,我有一个ANT任务来在eclipse项目中执行Sass: <project basedir="." default="sass"> <target name="sass"> <apply dest="www/styles" executable="sass"> <srcfile/> <targetfile/> <fileset dir=

我有一个ANT任务来在eclipse项目中执行Sass:

<project basedir="." default="sass">
    <target name="sass">
        <apply dest="www/styles" executable="sass">
            <srcfile/>
            <targetfile/>
            <fileset dir="styles" includes="*.scss"/>
            <mapper from="*.scss" to="*.css" type="glob"/>
        </apply>
    </target>
</project>
sass和sass.bat都可以从命令行调用,以便
Ruby/bin
文件夹位于系统
PATH
变量中

我不想为不同的操作系统保存此文件的两个版本


我该怎么解决这个问题呢?

[不是答案,但太大了,无法评论]

Windows shell了解如何展开pathext。Ant不解释-它只尝试.exe,而不是其他

任务将委托给Runtime.exec,而Runtime.exec又会 调用::CreateProcess。是后一个Win32函数定义了 调用的确切语义。特别是如果你不把 可执行文件的文件扩展名,只查找“.EXE”文件, 不是.COM“、.CMD”或环境中列出的其他文件类型 变量PATHEXT。仅由shell使用

请注意,.bat文件通常不能直接执行。一个 通常需要使用 /c开关

一个常见的问题是路径上没有可执行文件。以防收到错误消息 无法运行程序“…”:CreateProcess错误=2。系统找不到 指定的路径。请查看您的PATH变量。只需键入 命令直接在命令行上执行,如果Windows找到它,Ant 我也应该这样做。(否则,请向用户邮件列表寻求帮助。)如果 Windows无法执行该程序,请添加该程序的目录 设置路径(设置路径=%PATH%;dirOfProgram)或指定绝对值 构建文件中可执行文件属性中的路径


我通过添加条件变量
exec\u file
解决了这个问题,对于Windows系列操作系统,它的值为
sass.bat
,对于其他系统,它的值为
sass

<project basedir="." default="sass">
    <condition property="exec_file" value="sass.bat" else="sass" >
        <os family="windows" />
    </condition>

    <target name="sass">
        <apply dest="www/styles" executable="${exec_file}">
            <srcfile/>
            <targetfile/>
            <fileset dir="styles" includes="*.scss"/>
            <mapper from="*.scss" to="*.css" type="glob"/>
        </apply>
    </target>
</project>


我忘了评论您的“非答案”引导我找到了答案。非常感谢。虽然这解决了您的问题,但并没有回答您的问题。
<project basedir="." default="sass">
    <condition property="exec_file" value="sass.bat" else="sass" >
        <os family="windows" />
    </condition>

    <target name="sass">
        <apply dest="www/styles" executable="${exec_file}">
            <srcfile/>
            <targetfile/>
            <fileset dir="styles" includes="*.scss"/>
            <mapper from="*.scss" to="*.css" type="glob"/>
        </apply>
    </target>
</project>