Муравей и юкомпрессор - PullRequest
       11

Муравей и юкомпрессор

1 голос
/ 30 августа 2011

Я пытаюсь интегрировать 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, который, кажется, отсутствует.

Есть идеи, что я могу делать неправильно?

Ура!

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

В вашем taskdef отсутствует одна библиотека.

<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>   

EDIT:,

Проблема как-то связана с местоположениями фляги и загрузчиком классов Ant, см.this post

Одним из обходных путей является копирование YUIAnt.jar, yuicompressor-2.4.6.jar и rhino-1.6R7.jar в один каталог.Тогда используйте это как выше.Я пробовал, и это работает.

1 голос
/ 21 декабря 2011

если вы используете http://code.google.com/p/yui-compressor-ant-task/ для меня решение было бы использовать classname="net.noha.tools.ant.yuicompressor.tasks.YuiCompressorTask" вместо classname="com.yahoo.platform.yui.compressor.YUICompressTask"

...