繁体   English   中英

Ant任务:将HTML文件中使用的所有脚本复制到目录并进行压缩

[英]Ant Task: Copy all scripts used in HTML File to a directory and compress

我目前正在尝试创建应执行以下操作的ANT build.xml:

查找HTML文件中所有<script src =“ foo.js”>标记的出现。 使用该脚本文件的src属性,并将相应的js文件复制到临时目录。 然后将目录中的所有脚本串联起来,以便有一个大脚本。 最后压缩脚本(使用YUI压缩器)。 我在ANT构建方面没有太多经验,但这是我到目前为止的方法:

<target name="concat">
    <copy todir="${output.dir}/js/temp">
        <fileset dir="${src.dir}">
            <include name="if.html"/>
        </fileset>
        <filterchain>
            <linecontainsregexp>
                <regexp pattern="script.*src=&quot;(.*?)&quot;" />
            </linecontainsregexp>
            <tokenfilter>
                <replaceregex pattern=".*&lt;script.*src=&quot;(.*?)&quot;&gt;.*" replace="\1" />
            </tokenfilter>

        </filterchain>      
    </copy>

    <concat destfile="${output.dir}/js/application.js">
        <fileset dir="${output.dir}/js/temp" includes="*.js" />
    </concat>
</target>

到目前为止,buildscript将从文件if.html获取所有javascripts路径。 我将在文件夹“ $ {output.dir} / js / temp”中创建一个文件if.html,并将所有路径放在其中。 但这不是我想要的。 我希望所有脚本文件都复制到“ $ {output.dir} / js / temp”中,以便在下一步进行合并。

谢谢你的帮助!

问候

因此,最后我通过使用名为“ ant-contrib”的ANT插件使其工作。 这增加了在ANT脚本中使用for循环的可能性。

  <loadfile property="file" srcfile="${output.dir}/js/temp/if.html"/>
  <for param="line" list="${file}" delimiter="${line.separator}">
          <sequential>       
            <concat destfile="${output.dir}/js/application.js" append="true">
                 <fileset dir="${src.dir}" includes="@{line}" />
            </concat>
            <echo message="Adding js ${src.dir}/@{line}"/>
          </sequential>
  </for>

现在,我可以遍历文件的每一行(每一行都是js文件的路径),并将文件内容附加到主application.js。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM