【问题标题】:Ant: Apply with fileset, but only exec once on one file?Ant:应用文件集,但只在一个文件上执行一次?
【发布时间】:2012-07-10 05:42:39
【问题描述】:

我正在处理与此处的问题类似的问题:ANT script to compile all (css) LESS files in a dir and subdirs with RHINO

但是,我很难将其定制为一个特定的要求:

  • 如果dir.less 中的任何.less 文件发生更改:在一个文件上运行 LESS(因为它会导入其他较少的文件,从而生成单个组合输出)。

这是我当前build.xml的状态:

<target name="less" description="Compile LESS files">

    <echo message="Checking for LESS file changes..."/>

    <apply dir="${dir.less}" executable="${tool.less}" parallel="false" failonerror="true">

        <fileset dir="${dir.less}" includes="*.less" />
        <srcfile/>

        <mapper type="glob" from="*.less" to="${dir.css}/*.css"/>
        <targetfile/>

        <arg value="-compress" />
  </apply>

</target>

目前这会构建所有.LESS 文件并将它们输出到适当的位置(适合居住)。如果我将映射器全局替换为:

&lt;mapper type="glob" from="MainFileThatImportsOthers.less" to="${dir.css}/MainFileThatImportsOthers.css"/&gt;

fileset 指令有效地简化为该文件,更改该目录中的其他 .LESS 文件不会导致任务输出。

谁能指出我正确的方向,这样我就可以避免设置错误并每次都回避每个.LESS 文件?

【问题讨论】:

    标签: ant less


    【解决方案1】:

    我制定了一个可以正常工作的解决方案,我使用了一个upToDate 任务来设置一个属性,以便有条件地为编译器触发Exec

    <target name="scanLess" description="Scan for LESS file changes">
    
        <echo message="Checking for LESS file changes..."/>
    
        <uptodate property="tool.less.changed" targetfile="${dir.css}/MyFile.css" >
            <srcfiles dir="${dir.less}" includes="*.less" />
        </uptodate>
    
    </target>
    
    <target name="less" depends="scanLess" unless="tool.less.changed" description="Compile LESS files" >
    
        <echo message="LESS files changed, running lessc" />
    
        <exec executable="${tool.less}" failonerror="true">
            <arg value="${dir.less}/MyFile.less" />
            <arg value="${dir.css}/MyFile.css" />
            <arg value="-compress" />
        </exec>
    </target>
    

    【讨论】:

      【解决方案2】:

      研究 selectors 在 ANT 中的工作原理

      【讨论】:

        猜你喜欢
        • 2020-05-31
        • 2012-07-10
        • 2013-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多