当前位置: 首页 > 面试题库 >

从Ant运行YUI压缩器时确定哪个文件有错误

阎丰
2023-03-14
问题内容

在Jenkins CI
Server上运行的蚂蚁构建任务期间,我们使用YUI压缩器压缩javascript(和css文件)。但是,很难确定YUI压缩器使用哪个js文件出错。我们看到很多东西,例如:

[minify-js] [错误] 3:35:未终止的字符串文字
[minify-js] 
[minify-js] [错误] 3:35:语法错误
[minify-js] 
[minify-js] [错误] 4:8:语法错误
[minify-js] 
[minify-js] [错误] 1:0:编译产生了3个语法错误。
[minify-js] org.mozilla.javascript.EvaluatorException:编译产生3个语法错误。
[minify-js],位于com.yahoo.platform.yui.compressor.YUICompressor $ 1.runtimeError(YUICompressor.java:135)
org.mozilla.javascript.Parser.parse(Parser.java:410)上的[minify-js]
org.mozilla.javascript.Parser.parse(Parser.java:355)上的[minify-js]
com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:312)上的[minify-js]
com.yahoo.platform.yui.compressor.JavaScriptCompressor上的[minify-js]。(JavaScriptCompressor.java:533)
com.yahoo.platform.yui.compressor.YUICompressor.main(YUICompressor.java:112)上的[minify-js]
[minify-js],位于sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
[minify-js]在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[minify-js],位于sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[minify-js],位于java.lang.reflect.Method.invoke(Method.java:616)
com.yahoo.platform.yui.compressor.Bootstrap.main上的[minify-js](Bootstrap.java:20)
[minify-js]结果:2

在输出中,但我不知道错误来自数百个JS文件中的哪个。我们的ant任务看起来像:

<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压缩器方面的专家,我们可以做些什么,以便将发生错误的文件名输出到某个地方?


问题答案:

我不知道yuicompressor的工作方式,我假设它一次只能处理一个文件。

如果是这样,则可以使用ant-contrib中的for来实现。您需要先安装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>


 类似资料:
  • 我有一个压缩文件。“test.zip”,其中包含另外两个zip文件-a.zip和b.zip。我只想提取a.zip的内容,而不触及b.zip。 我尝试了下面的代码片段,但还没有找到运气- 请告知如何实现这一目标。

  • 问题 您有一个已成长为包含多个文件的应用,它已远不再是一个简单的脚本,你想向用户提供一些简单的方法运行这个程序。 解决方案 如果你的应用程序已经有多个文件,你可以把你的应用程序放进它自己的目录并添加一个__main__.py文件。 举个例子,你可以像这样创建目录: myapplication/ spam.py bar.py grok.py __main__.py 如

  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • 可以从jar文件中运行ant脚本吗? 目前,我有一个build.xml,它调用一些java代码,这些代码在一个jar文件中。然后它做一些进一步的蚂蚁处理。 当我从Eclipse导出jar文件时,我可以选择添加构建。xml文件到jar,所以我想知道我是否可以直接从jar运行ant脚本,这样我只需要给人们jar文件,而不是ant脚本。

  • 我试图从Ant build.xml文件运行jbehave故事。我有testng框架。我能够以以下方式执行测试 -JBehave测试来自testng.xml和-ammond类,这些类带有@test标记,来自build.xml。 问题是当我集成以上两个步骤时,即在testng.xml文件中添加Jbehave配置类(它获取故事),并尝试从build.xml触发。

  • 问题内容: 当用2.4.6最小化yui时,出现此问题: java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:232 当通过我的IDE启动时,它可以工作,但是当部署到jboss时,它就不能工作。这个地方:http: //yuilibrary.com/forum/viewtopic.php?p=20086对该问题进行了一些讨论。 显然,问题出在org