我即将创建一个用gzip压缩所有.js文件的apache ant目标。现在我想出了以下内容:
<target name="compress-js" description="Compressed JS files">
<echo>Compressing JS files...</echo>
<apply executable="gzip" parallel="false">
<arg value="-c" />
<arg value="--best" />
<srcfile />
<arg value=">" />
<targetfile suffix=".${extension}" />
<fileset dir="${js.dir}" includes="**/*.js" />
<mapper type="identity" />
</apply>
<echo>OK!</echo>
</target>
读取文件的工作正常,但生成的目标文件路径错误。
给定$ {js.dir}是:/ var / htdocs / js 我在其他目录中启动我的ant目标,上面的脚本生成以下shell命令:
gzip -c /var/htdocs/js/a/b/1.js > ./a/b/1.js
这是不正确的。目标文件应该获得与源文件相同的绝对路径。我希望它产生以下一行:
gzip -c /var/htdocs/js/a/b/1.js > /var/htdocs/js/a/b/1.js
有人可以告诉我该怎么做吗?
答案 0 :(得分:1)
您可以通过两个步骤完成:首先gzip文件,然后重命名它们以删除后缀。
<target name="compress-js">
<apply executable="gzip" parallel="false">
<srcfile/>
<fileset dir="${js.dir}" includes="**/*.js"/>
</apply>
<move todir="${js.dir}">
<fileset dir="${js.dir}">
<include name="**/*.gz"/>
</fileset>
<globmapper from="*.gz" to="*"/>
</move>
</target>
答案 1 :(得分:1)
使用类似=
的内容<tar destfile="./your.tar.gz" compression="gzip">
<tarfileset dir="${js.dir}">
<include name="**/*.js"/>
</tarfileset>
</tar>
</target>
除此之外,还有一个YUI Compressor Task的包装器任务,这里有一些详细说明如何使用它= Compress JavaScript and CSS as Part of your Build Process