我正在尝试将yuicompressor与Ant集成,以自动化CSS和JS文件的缩小。但是,当我尝试运行build.xml时,我不断收到以下错误消息:
BUILD FAILED
/Applications/MAMP/htdocs/zanadu-dev/build/build.xml:64: taskdef A class needed by class com.yahoo.platform.yui.compressor.YUICompressTask cannot be found: org/mozilla/javascript/EvaluatorException
using the classloader AntClassLoader[/usr/share/ant/lib/YUIAnt.jar:/usr/share/ant/lib/yuicompressor-2.4.6/build/yuicompressor-2.4.6.jar:/usr/share/ant/lib/yuicompressor-2.4.6/lib/rhino-1.6R7.jar]
以下是我的build.xml文件中的代码:
<target name="minify" depends="build" description="Minifiy CSS and JS files">
<available file="${antlib.dir}/YUIAnt.jar" property="YUIANT_AVAILABLE" />
<fail unless="YUIANT_AVAILABLE" message="YUIAnt.jar not found" />
<taskdef name="yuicompress" classname="com.yahoo.platform.yui.compressor.YUICompressTask">
<classpath>
<pathelement path="${antlib.dir}/YUIAnt.jar" />
<pathelement path="${antlib.dir}/yuicompressor-2.4.6/build/yuicompressor-2.4.6.jar" />
<pathelement path="${antlib.dir}/yuicompressor-2.4.6/lib/rhino-1.6R7.jar" />
</classpath>
</taskdef>
<mkdir dir="${jsminify.dir}" />
<yuicompress linebreak="300" warn="false" munge="yes" preserveallsemicolons="true"
outputfolder="${jsmin.dir}">
<fileset dir="${js.dir}" >
<include name="**/*.js" />
</fileset>
</yuicompress>
<mkdir dir="${cssminify.dir}" />
<yuicompress linebreak="300" warn="false" munge="yes" preserveallsemicolons="true"
outputfolder="${cssmin.dir}">
<fileset dir="${css.dir}" >
<include name="**/*.css" />
</fileset>
</yuicompress>
</target>
我已经尝试过以下几个在线示例,但似乎都会产生相同的错误消息。不确定我在哪里可以找到似乎缺少的EvaluatorException类。
知道我可能做错了什么吗?
干杯!
答案 0 :(得分:2)
您的taskdef缺少一个lib。
<taskdef name="yuicompress" classname="com.yahoo.platform.yui.compressor.YUICompressTask">
<classpath>
<pathelement path="${antlib.dir}/YUIAnt.jar" />
<pathelement path="${antlib.dir}/yuicompressor-2.4.6.jar" />
<pathelement path="${antlib.dir}/rhino-1.6R7.jar" />
</classpath>
</taskdef>
修改:,强>
问题以某种方式与jar位置和Ant的类加载器相关,请参阅此post
一种解决方法是将YUIAnt.jar,yuicompressor-2.4.6.jar和rhino-1.6R7.jar复制到一个目录中。然后像上面一样使用它。我已经尝试过它了。
答案 1 :(得分:1)
如果您使用http://code.google.com/p/yui-compressor-ant-task/解决方案,则使用classname="net.noha.tools.ant.yuicompressor.tasks.YuiCompressorTask"
代替classname="com.yahoo.platform.yui.compressor.YUICompressTask"