在Ant构建脚本中搜索如何使用YUI Compressor几天之后,我终于让它工作了。许多旧的示例(< 2010)存在用于创建Ant任务并在构建脚本中使用它,但这对我来说太过分了。
许多示例也很旧,需要更多的Ant知识或配置Ant任务。下面的解决方案对我来说简单快捷,简单有效。
答案 0 :(得分:15)
以下内容已添加到我的<target>
个代码中,以便在单个目录中压缩所有个javascript文件。这些文件保留其原始名称。要为CSS执行此操作,只需将'js'切换为'css'并相应地更新路径。
这是通过YUI Compressor 2.4.7完成的,我在Eclipse Juno中运行Ant构建脚本,而不更改类路径或其他设置修改。
<!-- Minimizing Javascript files -->
<echo message="Compressing Javascript files at location: ${build.root}/resources/js/*.js" />
<java jar="c:/dev/lib/yuicompressor-2.4.7/build/yuicompressor.jar" fork="true">
<arg value="${build.root}/resources/js/*.js" /> <!-- input path for JS files -->
<!--<arg value="-v" /> --><!-- Turn on verbose -->
<arg value="-o" />
<arg value="'.js$:.js'" />
<arg value="${build.root}/resources/js/*.js" /> <!-- output path for JS files -->
<classpath>
<pathelement location="c:/dev/lib/yuicompressor-2.4.7/build/yuicompressor.jar"/>
</classpath>
</java>
请随时改进此答案。上面的解决方案适合我,但我不是专家。
答案 1 :(得分:5)
我使用以下解决方案来缩小文件,因为我获得了FileNotFoundException
之前的答案。
要缩小CSS,请将js
替换为下面的css
。
<target name="compress" description="compress the JS files">
<copy todir="temp/js" overwrite="yes">
<fileset dir="original/js"/>
</copy>
<apply executable="java" parallel="false" dest="temp/js">
<fileset dir="temp/js" includes="**/*.js" />
<arg line="-jar"/>
<arg path="test_lib/yuicompressor-2.4.8.jar" />
<arg line="-v"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="*.js" to="*-min.js"/>
<targetfile/>
</apply>
<move todir="original/js" overwrite="true">
<fileset dir="temp/js" />
<mapper type="glob" from="*-min.js" to="*.js"/>
</move>
</target>
答案 2 :(得分:1)
我尝试了维克多的代码。实际上没有临时目录。我使用了这段代码,它对我有用。
<apply executable="java" parallel="false" >
<fileset dir="${build.root}/resources/js" includes="**/*.js" />
<arg line="-jar"/>
<arg path="${basedirectory}/yuicompressor-2.4.8.jar" />
<srcfile/>
<arg value="-o" />
<arg value="'.js$:.js'" />
<!-- output path for JS files -->
<arg value="${build.root}/resources/js/*.js" />
<arg line="--nomunge" />
<arg line="--preserve-semi" />
</apply>
答案 3 :(得分:0)
我会使用这个ant任务:http://code.google.com/p/yui-compressor-ant-task/或者这个:https://github.com/parambirs/ant-yui-compressor看起来比应用更新。
答案 4 :(得分:0)
您可以压缩特定文件夹中可用的所有Js文件,而无需复制到临时文件夹。
<property name="js.source" value="js/combine" />
<property name="js.target" value="js/compress" />
<fileset dir="${yuicompressor.lib}">
<include name="yui/yuicompressor-2.4.z8.jar"/>
</fileset>
<target name="minifyjs" description="compress the JS files">
<delete includeEmptyDirs="true">
<fileset dir="${js.target}" includes="**/*" defaultexcludes="no"/>
</delete>
<apply executable="java" parallel="false" verbose="true" failonerror="yes">
<fileset dir="${js.source}" includes="**/*.js" excludes="**/*-min.js, **/*.min.js"/>
<arg line="-jar"/>
<arg path="${yuicompressor.lib}" />
<srcfile/>
<arg line="-o"/>
<targetfile/>
<mapper type="glob" from="*.js" to="${js.target}/*.js"/>
<arg line="--charset"/>
<arg line="utf-8"/>
</apply>
</target>
上面的代码对我来说很好。