我有一个包含多个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中包含文件的生成,我不知道从哪里开始。如果有人能指出我正确的方向,我会很感激。
答案 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" </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}" </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>