我正在处理类似问题的问题:ANT script to compile all (css) LESS files in a dir and subdirs with RHINO
但是,我很难将其定制为一个特定的要求:
.less
中的任何dir.less
文件发生更改:只运行一个文件(因为它导入其他较少的文件,只生成一个组合输出)。< / LI>
这是我当前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
个文件,并将它们输出到适当的位置(这是宜居的)。如果我将mapper glob替换为:
<mapper type="glob" from="MainFileThatImportsOthers.less" to="${dir.css}/MainFileThatImportsOthers.css"/>
fileset指令有效地简化为该文件,并且更改该目录中的其他.LESS
文件不会导致该任务的输出。
有人能指出我正确的方向,所以我可以避免设置错误并每次重复使用每个.LESS
文件吗?
答案 0 :(得分:0)
我制定了一个正常工作的解决方案,我使用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>
答案 1 :(得分:0)
调查selectors在ANT中的工作方式