2012-05-04 13 views
10

Kompresujemy nasze pliki javascript (i css) kompresorem YUI podczas wykonywania naszego zadania budowania mrówek na naszym serwerze Jenkins CI. Jednak bardzo trudno jest określić, z którym kompilatorem JS YUI występują błędy. Widzimy kilka rzeczy, takich jak:Określa, który plik zawiera błąd podczas uruchamiania kompresora YUI z Ant

 
[minify-js] [ERROR] 3:35:unterminated string literal 
[minify-js] 
[minify-js] [ERROR] 3:35:syntax error 
[minify-js] 
[minify-js] [ERROR] 4:8:syntax error 
[minify-js] 
[minify-js] [ERROR] 1:0:Compilation produced 3 syntax errors. 
[minify-js] org.mozilla.javascript.EvaluatorException: Compilation produced 3 syntax errors. 
[minify-js]  at com.yahoo.platform.yui.compressor.YUICompressor$1.runtimeError(YUICompressor.java:135) 
[minify-js]  at org.mozilla.javascript.Parser.parse(Parser.java:410) 
[minify-js]  at org.mozilla.javascript.Parser.parse(Parser.java:355) 
[minify-js]  at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:312) 
[minify-js]  at com.yahoo.platform.yui.compressor.JavaScriptCompressor.(JavaScriptCompressor.java:533) 
[minify-js]  at com.yahoo.platform.yui.compressor.YUICompressor.main(YUICompressor.java:112) 
[minify-js]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[minify-js]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
[minify-js]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
[minify-js]  at java.lang.reflect.Method.invoke(Method.java:616) 
[minify-js]  at com.yahoo.platform.yui.compressor.Bootstrap.main(Bootstrap.java:20) 
[minify-js] Result: 2 

na wyjściu, ale nie mam pojęcia, który z setek plików JS błąd pochodzi. Naszym zadaniem mrówka wygląda:

<target name="minify-js"> 
    <apply executable="yuicompressor" parallel="false" dest="${global.dir}/" taskname="minify-js" force="true"> 
     <fileset dir="${global.dir}/" includes="**/*.js"> 
      <exclude name="*.min.js" /> 
     </fileset> 
     <arg value="--type=js" /> 
     <srcfile /> 
     <arg value="-o" /> 
     <targetfile /> 
     <mapper type="identity" /> 
    </apply> 
</target> 

Nie będąc ekspertem w Ant lub YUI kompresor, czy jest coś, co możemy zrobić tak, że nazwa pliku gdzie błąd się dzieje jest wyjście gdzieś?

+0

Mam ten sam problem. Kompilacja Jnkinsa kończy się niepowodzeniem, gdy pliki js zawierają błąd składniowy. Czy istnieje sposób na wyjście plików, które mają błędy i pomijają te pliki, aby kompilacja nie przyniosła niepowodzenia.? – Jugi

Odpowiedz

6

Nie wiem, jak działa yuicompressor, zakładam, że działa na jednym pliku na raz.

Jeśli to prawda, można to zrobić za pomocą for from ant-contrib. Musisz wcześniej zainstalować ant-contrib.

+0

Z kilkoma drobnymi zmianami, to całkowicie działa ... –

+0

@KrisErickson - Jeśli to możliwe, czy mógłbyś opublikować modyfikacje, które musiałeś wykonać? – Chandranshu

+0

Dokonano zmian w powyższym kodzie. –

2

Użyj tej opcji:

--verbose wyświetlać komunikaty informacyjne i ostrzeżenia.

Jest ładny wpis w dokumentacji przez przypadkach takich jak Twoja:

Nie wahaj się korzystać z opcji -v. Chociaż nie jest to zamiennik dla JSLinta , wyświetli kilka przydatnych wskazówek, gdy wykryje, że coś może być nie tak z twoim kodem.

+1

Podczas gdy -v jest bardzo szczegółowe, nie wypisuje nazwy pliku ... –

+0

Obawiam się, że nie ma opcji, którą można wypróbować za pomocą kompresora YUI. Istnieje kilka minimalizatorów, które działają całkiem dobrze i dostarczają tego rodzaju informacji. W każdym razie, przed minimalizacją, zawsze powinieneś JSLint swoje pliki - zazwyczaj błędy zgłaszane później przez YUIC były trochę głupie ... –

+0

Robimy JSHint im, i nie ma z tego żadnych błędów. Myślę, że musi istnieć sposób, aby mrówka odtworzyła plik, zanim uruchomi go przez YUI, ale nie wiem wystarczająco dużo o mrówce. –

2

Próbowałeś

<apply … verbose="true"> 

czy drukować podsumowanie po wykonaniu lub nie. Od Ant 1.6.

Idealnie byłoby wydrukować oświadczenie przed próbuje wykonać na pliku, ale o podsumowanie potem przynajmniej pozwala zobaczyć ostatnią udaną plik, który powinien wskazać na złamaną pliku jako zestawy plików są zwykle Sekwencja alfanumeryczna.

+0

To tylko daje mi [apply] Zastosowane java do 163 plików i 0 katalogów. Nadal nie ma nazwy pliku – Niek

Powiązane problemy