使用Ant生成MetaData

时间:2010-04-28 13:56:15

标签: javascript ant

我有一个包含多个javascript文件的文件夹结构,这些文件中的每一个都需要top = // @ include“includes.js”的标准文本

每个文件夹都需要包含一个名为includes.js的文件,该文件的目录中包含每个文件的include条目,并且其父目录中包含该文件的条目。

我正在尝试使用蚂蚁实现这一目标并且它不太顺利。到目前为止,我有以下内容,它执行插入标题的工作,但没有实际移动或复制文件。我听过有人提到<replace>这个任务要做,但有点难过。

<?xml version="1.0" encoding="UTF-8"?>

<project name="JavaContentAssist" default="start" basedir=".">

    <taskdef resource="net/sf/antcontrib/antcontrib.properties">
      <classpath>
        <pathelement location="C:/dr_workspaces/Maven Repository/.m2/repository/ant-contrib/ant-contrib/20020829/ant-contrib-20020829.jar"/>
      </classpath>
    </taskdef>

    <target name="start">

        <foreach target="strip" param="file">

            <fileset dir="${basedir}">
                <include name="**/*.js"/>
                <exclude name="**/includes.js"/>
            </fileset>

        </foreach>

    </target> 

    <target name="strip">

        <move file="${file}" tofile="${a_location}" overwrite="true">

            <filterchain>
                <striplinecomments>
                    <comment value="//@" />
                </striplinecomments>
                <concatfilter prepend="${basedir}/header.txt">
                </concatfilter>
            </filterchain>
        </move>


    </target>

</project> 

至于dir中包含文件的生成,我不知道从哪里开始。如果有人能指出我正确的方向,我会很感激。

1 个答案:

答案 0 :(得分:1)

这似乎满足问题描述:

<project default="addincludes">
  <taskdef resource="net/sf/antcontrib/antcontrib.properties">
    <classpath>
      <pathelement location="ant-contrib/ant-contrib-1.0b3.jar"/>
    </classpath>
  </taskdef>

  <target name="addincludes">
    <foreach target="perdir" param="dir">
      <path>
        <dirset dir="src" includes="**"/>
      </path>
    </foreach>
  </target>

  <target name="perdir">
    <echo file="${dir}/includes.js">//@include "../includes.js"&#10;</echo>
    <foreach target="perfile" param="file">
      <path>
        <fileset dir="${dir}" includes="*.js" excludes="includes.js"/>
      </path>
    </foreach>
  </target>

  <target name="perfile">
    <basename property="basename" file="${file}"/>
    <echo file="${dir}/includes.js" append="true">//@include "${basename}"&#10;</echo>
    <move file="${file}" tofile="${file}.tmp" overwrite="true">
      <filterchain>
        <striplinecomments>
          <comment value="//@" />
        </striplinecomments>
        <concatfilter prepend="header.txt"/>
      </filterchain>
    </move>
    <move file="${file}.tmp" tofile="${file}" overwrite="true"/>
  </target>
</project>