LmC*_*LmC 3 ant command-line file concatenation batch-file
我目前有这个命令:
copy /b *.txt newfile.txt
Run Code Online (Sandbox Code Playgroud)
但我想包含所有带文件夹的文件.
我怎样才能做到这一点?是否可以将此添加到Apache Ant?我也考虑这样做来缩小JS文件.
我正在使用Windows,并希望运行命令或批处理文件,但有问题.
反正也有删除行吗?是否有比我目前使用的更好的命令?
更新:
<target name="concatenate" description="Concatenate all js files">
<concat destfile="build/application.js">
<fileset dir="js" includes="*.js" />
</concat>
</target>
<target name="compress" depends="concatenate" description="Compress application.js to application-min.js">
<apply executable="java" parallel="false">
<filelist dir="build" files="application.js" />
<arg line="-jar" />
<arg path="C:\yuicompressor-2.4.7\build\yuicompressor-2.4.7.jar" />
<srcfile />
<arg line="-o" />
<mapper type="glob" from="*.js" to="build/*-min.js" />
<targetfile />
</apply>
Run Code Online (Sandbox Code Playgroud)
现在我使用上面的代码,但不能让它包含文件夹中的文件
正如oers在评论中指出的那样,Ant模式用于**递归匹配目录.以下是Ant手册中的相关模式部分:
为了使事情更加灵活,我们添加了一个额外的功能,这使得匹配多个目录级别成为可能.这可用于匹配目录树中任何位置的完整目录树或文件.为此,
**必须将其用作目录的名称.当**用作模式中目录的名称时,它匹配零个或多个目录.例如:/test/**匹配下的所有文件/目录/test/,,如/test/x.java,或/test/foo/bar/xyz.html,但不是/xyz.xml.有一个"速记":如果一个模式以
/或结尾\,则**附加.例如,mypackage/test/被解释为它是mypackage/test/**.
上面的"连接"目标是:
<target name="concatenate" description="Concatenate all js files">
<concat destfile="build/application.js">
<fileset dir="js" includes="**/*.js" excludes="**/*.min.js" />
</concat>
</target>
Run Code Online (Sandbox Code Playgroud)