10

Jenkins CIサーバーで実行されているantビルドタスク中に、JavaScript(およびcssファイル)をYUIコンプレッサーで圧縮します。ただし、YUIコンプレッサーでエラーが発生しているjsファイルを特定することは非常に困難です。次のようなものがたくさんあります。

[minify-js][エラー]3:35:終了していない文字列リテラル
[minify-js]
[minify-js][エラー]3:35:構文エラー
[minify-js]
[minify-js][エラー]4:8:構文エラー
[minify-js]
[minify-js] [ERROR] 1:0:コンパイルにより3つの構文エラーが発生しました。
[minify-js] org.mozilla.javascript.EvaluatorException:コンパイルにより3つの構文エラーが発生しました。
[minify-js] at com.yahoo.platform.yui.compressor.YUICompressor $ 1.runtimeError(YUICompressor.java:135)
[minify-js] org.mozilla.javascript.Parser.parse(Parser.java:410)
[minify-js] 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(ネイティブメソッド)
[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]結果:2

出力にはありますが、何百ものJSファイルのどれからエラーが発生しているのかわかりません。私たちのアリのタスクは次のようになります。

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

AntまたはYUIコンプレッサーの専門家ではありませんが、エラーが発生しているファイル名をどこかに出力するためにできることはありますか?

4

3 に答える 3

6

yuicompressorがどのように機能するかはわかりませんが、一度に1つのファイルで機能すると思います。

これが当てはまる場合は、forfromant-contribを使用して実行できます。事前にant-contribをインストールする必要があります。

<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="${global.dir}/bin_data/ant-contrib-0.6.jar"/>
<for param="file">
  <path>
    <fileset dir="${global.dir}/" includes="**/*.js">
      <exclude name="*.min.js" />
    </fileset>
  </path>
  <sequential>
    <echo>youcompressor for @{file}</echo> <!-- Will output each file and help debugging -->
    <exec executable="yuicompressor"> <!-- I took the args from the official documentation-->
      <arg value="--type=js" />
      <arg value="-o" />
      <arg value="'.js$:-min.js'" />
      <arg value="@{file}" />
    </exec>
  </sequential>
</for>
于 2012-05-11T07:01:14.327 に答える
2

このオプションを使用してみてください:

-v、-verbose情報メッセージと警告を表示します。

あなたのような場合のドキュメントには素晴らしいエントリがあります:

-vオプションを使用することを躊躇しないでください。JSLintの代わりにはなりませんが、コードに問題がある可能性があることを検出すると、役立つヒントが出力されます。

于 2012-05-04T20:21:49.470 に答える
2

試しましたか

<apply … verbose="true">

実行後に要約を印刷するかどうか。Ant1.6以降。

理想的には、ファイルで実行を試みる前にステートメントを出力しますが、後で要約を作成すると、少なくとも最後に成功したファイルを確認できます。ファイルセットは通常英数字でシーケンスされているため、壊れたファイルを示しているはずです。

于 2012-05-11T06:31:46.073 に答える