2012-02-14 84 views
4

Eclipse PDT有这个方便的内置Yui压缩机在文件的上下文菜单。但是当构建一个使用多个这样的文件的web应用程序时,每次更新后手动压缩这些文件变得非常繁琐。它甚至不记得哪些文件压缩到哪些文件名,所以你必须再次输入。自动化Eclipse“Yui压缩机...”

是否可以在Eclipse中轻松自动执行此过程,因此您可以单击“构建”或其他内容,并将所有指定的文件压缩到其目标?

关于Eclipse中这个Yui特性的文档确实存在真空。

我使用Eclipse靛蓝3.7.0与PDT 3.0.0.v20110516-11,但两者PDT和锐选项仍然因为伽利略

-update-

非常相似自动化的解决方案,而不是Eclipse的母语,但接近:

  • GNU的makefile做出

    %-min.js: %.js 
        ${java} -jar ${compressor} $< -o ${<:.js=-min.js} 
    
  • Windows批处理

    FOR %f IN (*.js) DO java -jar yuicompressor.jar %f -o deploy\%f 
    
  • 的Linux shell脚本

    ls -1 *.js | awk '{printf("java -jar yuicompressor.jar %s -o deploy/%s",$1,$1)}' | /bin/sh 
    
  • ANT文件

    在这里看到: http://www.ubik-ingenierie.com/ubikwiki/index.php?title=Minifying_JS/CSS
    如何粘贴HTML/XML吗?

另请参阅this问题。

+0

您使用的是哪种版本的Eclipse和PDT? – prodigitalson 2012-02-14 15:14:14

+1

Ubuntu 11.10仓库中的最新版本。我编辑了我原来的帖子。 – Redsandro 2012-02-15 05:20:45

+0

不错...我要去靛蓝 - 我仍然使用Helios。 – prodigitalson 2012-02-15 12:53:36

回答

5

好吧,其实我下载了罐子,创建了一个Ant任务来CSS和JS压缩。我使用Tomcat,因此它包含了上传内容,清理工作/目录等任务。希望能帮助到你。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE project> 
<project name="MyProject" default="subir"> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <property name="project.name" value="MyProject" /> 

    <property name="src.dir" location="src" /> 
    <property name="web.dir" location="WebContent" /> 
    <property name="lib.dir" location="WebContent/WEB-INF/lib" /> 
    <property name="bin.dir" location="WebContent/WEB-INF/classes" /> 

    <property name="minify.dir" location="minified" /> 
    <property name="minify.sourcedir" location="${skin.dir}/resources/" /> 
    <!-- <property name="minify.sourcedir" location="${web.dir}/resources/" /> --> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <property prefix="env" file="build.properties" /> 

    <path id="project.classpath"> 
     <pathelement location="${src.dir}" /> 
     <fileset dir="${lib.dir}"> 
      <include name="*.jar" /> 
     </fileset> 
    </path> 

    <path id="yui.classpath.minifier"> 
     <fileset dir="${lib.dir}"> 
      <include name="YUIAnt.jar" /> 
      <include name="yuicompressor-2.4.2.jar" /> 
     </fileset> 
    </path> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <target name="checkTomcatHome"> 
     <condition property="local.tomcathome.exists"> 
      <available file="${env.TOMCAT_PRUEBAS}" type="dir" /> 
    </condition> 
    </target> 

    <target name="subir" depends="checkTomcatHome" if="local.tomcathome.exists"> 

     <echo message="El servidor Tomcat destino existe, buscando archivos para copia en el proyecto y en en OsmoCore/WebContent..." /> 

     <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}"> 
      <fileset dir="${web.dir}"> 
       <include name="**/*.*" /> 
      </fileset> 
     </copy> 

     <!--<echo message="Buscando archivos para copia en ${env.TOMCAT_PRUEBAS}/webapps/${project.name}/WEB-INF/classes..." /> 
     <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}/WEB-INF/classes"> 
      <fileset dir="${bin.dir}"> 
       <include name="**/*.*" /> 
      </fileset> 
     </copy>--> 

    </target> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <target name="WAR"> 

     <delete file="${project.name}.war"/> 
     <delete dir="TMP_WAR"/> 
     <mkdir dir="TMP_WAR"/> 


     <copy todir="TMP_WAR"> 
      <fileset dir="${web.dir}"> 
       <include name="**/*.*" /> 
      </fileset> 
     </copy> 

     <copy todir="TMP_WAR/WEB-INF/classes"> 
      <fileset dir="${bin.dir}"> 
       <include name="**/*.*" /> 
      </fileset> 
     </copy> 

     <delete dir="${project.name}.war"/> 

     <zip destfile="${project.name}.war"> 
      <zipfileset dir="TMP_WAR"> 
       <include name="**/*.*" /> 
      </zipfileset> 
     </zip> 

     <delete dir="TMP_WAR"/> 

    </target> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <target name="subirCompleto" depends="checkTomcatHome" if="local.tomcathome.exists"> 
     <echo message="El servidor Tomcat destino existe, buscando carpetas Work y ${project.name} en Webapps, para eliminar" /> 
     <delete dir="${env.TOMCAT_PRUEBAS}/work" /> 
     <delete dir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}" /> 
     <antcall target="subir" /> 
    </target> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <target name="borrarWork" depends="checkTomcatHome" if="local.tomcathome.exists"> 
     <echo message="El servidor Tomcat destino existe, buscando carpeta Work a eliminar..." /> 
     <delete dir="${env.TOMCAT_PRUEBAS}/work"/> 
    </target> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <target name="css.minify"> 

     <echo message="Creando directorio temporal ${minify.dir} (si no existe aún)..." /> 
     <mkdir dir="${minify.dir}" /> 

     <echo message="Borrando versión anterior de la carpeta temporal ${minify.dir}/css-min/..." /> 
     <delete dir="${minify.dir}/css-min/" /> 
     <echo message="Creando carpeta temporal ${minify.dir}/css-min/..." /> 
     <mkdir dir="${minify.dir}/css-min/" /> 

     <echo message="Copiando estructura de ${web.dir}/resources/styles/ en carpeta temporal..." /> 
     <copy todir="${minify.dir}/css-min/"> 
      <fileset dir="${minify.sourcedir}/styles/"> 
       <include name="**/*.*" /> 
      </fileset> 
     </copy> 

     <echo message="Borrando los CSS copiados a la carpeta temporal..." /> 
     <delete> 
      <fileset dir="${minify.dir}/css-min/" > 
       <include name="**/*.css"/> 
      </fileset> 
     </delete> 

     <echo message="Comprimiendo!!!..." /> 
     <apply executable="java" parallel="false" dest="${minify.dir}/css-min/"> 
      <fileset dir="${minify.sourcedir}/styles/"> 
       <include name="**/*.css"/> 
      </fileset> 
      <arg line="-jar"/> 
      <arg path="${lib.dir}/yui_compressor/yuicompressor-2.4.7.jar"/> 
      <arg line="--line-break 0"/> 
      <arg line="--type css"/> 
      <arg line="--charset ISO-8859-1"/> 
      <arg line="--nomunge"/> 
      <!-- <arg line="- -verbose"/> --> 
      <srcfile /> 
      <arg line="-o"/> 
      <mapper type="glob" from="*.css" to="*.css"/> 
      <targetfile /> 
     </apply> 
    </target> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <target name="js.minify"> 

     <echo message="Creando directorio temporal ${minify.dir} (si no existe aún)..." /> 
     <mkdir dir="${minify.dir}" /> 

     <echo message="Borrando versión anterior de la carpeta temporal ${web.dir}/resources/js-min/..." /> 
     <delete dir="${minify.dir}/js-min/" /> 
     <echo message="Creando carpeta temporal ${web.dir}/resources/js-min/..." /> 
     <mkdir dir="${minify.dir}/js-min/" /> 

     <echo message="Copiando estructura de ${web.dir}/resources/scripts/ en carpeta temporal..." /> 
     <copy todir="${minify.dir}/js-min/"> 
      <fileset dir="${minify.sourcedir}/scripts/"> 
       <include name="**/*.*" /> 
      </fileset> 
     </copy> 

     <echo message="Borrando los JS copiados a la carpeta temporal..." /> 
     <delete> 
      <fileset dir="${minify.dir}/js-min/" > 
       <include name="**/*.js"/> 
      </fileset> 
     </delete> 

     <echo message="Comprimiendo!!!..." /> 
     <apply executable="java" parallel="false" dest="${minify.dir}/js-min/"> 

      <fileset dir="${minify.sourcedir}/scripts"> 
       <include name="**/*.js"/> 
      </fileset> 
      <arg line="-jar"/> 
      <arg path="${lib.dir}/yui_compressor/yuicompressor-2.4.7.jar"/> 
      <arg line="--line-break 0"/> 
      <arg line="--type js"/> 
      <arg line="--charset ISO-8859-1"/> 
      <arg line="--nomunge"/> 
      <!--<arg line="- -verbose"/>--> 
      <srcfile /> 
      <arg line="-o"/> 
      <mapper type="glob" from="*.js" to="*.js"/> 
      <targetfile /> 
     </apply> 

    </target> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <target name="js.minified.subir" depends="checkTomcatHome" if="local.tomcathome.exists"> 
     <echo message="El servidor Tomcat destino existe, copiando archivos 'encogidos' a ${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/scripts..." /> 
     <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/scripts" overwrite="yes"> 
      <fileset dir="${minify.dir}/js-min/"> 
       <include name="**/*.*" /> 
      </fileset> 
     </copy> 
    </target> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <target name="css.minified.subir" depends="checkTomcatHome" if="local.tomcathome.exists"> 
     <echo message="El servidor Tomcat destino existe, copiando archivos 'encogidos' a ${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/styles..." /> 
     <copy todir="${env.TOMCAT_PRUEBAS}/webapps/${project.name}/resources/styles" overwrite="yes"> 
      <fileset dir="${minify.dir}/css-min/"> 
       <include name="**/*.*" /> 
      </fileset> 
     </copy> 
    </target> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <target name="css.minified.process"> 
     <echo message="Reduciendo el tamaño de los archivos CSS..." /> 
     <antcall target="css.minify" /> 

     <echo message="Cargando los archivos CSS..." /> 
     <antcall target="css.minified.subir" /> 

     <echo message="Borrando la carpeta temporal..." /> 
     <delete dir="${minify.dir}" /> 
    </target> 

    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

    <target name="js.minified.process"> 
     <echo message="Reduciendo el tamaño de los archivos JS..." /> 
     <antcall target="js.minify" /> 

     <echo message="Cargando los archivos JS..." /> 
     <antcall target="js.minified.subir" /> 

     <echo message="Borrando la carpeta temporal..." /> 
     <delete dir="${minify.dir}" /> 
    </target> 
    <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--> 

</project> 
+0

从来没有听说过它,但我看着它,这听起来像一个可能的解决方案。 (http://en.wikipedia.org/wiki/Apache_Ant)。尽管如此,该文件看起来过于复杂,好像创建一个python或shellscript文件同样好/乏味。但是,如果我可以通过在Eclipse中记录我的动作来自动创建该文件,ANT就会胜出,就像一个宏。你能详细说明一下吗?或者提供一个关于这方面信息的链接? – Redsandro 2012-02-15 05:29:19

+0

看起来很复杂,但任务非常简单,仅使用一些基本功能。查看Apache ANT文档以及其他一些解决方案,如http://www.vogella.de/articles/ApacheAnt/article.html和https://www6.software.ibm.com/developerworks/education/j-apant/j- apant-ltr.pdf。 AFAIK,任务不能被“录制”,因此取决于你。 – Alfabravo 2012-02-15 12:55:15

0

您还可以使用Node.js批量缩小但是,此选项仅适用于Linux用户(现在)。

每当一些软件包是可怕的缺乏便利(Eclipse中)或制造商批量格式只是疯狂(ANT),有人聪明走来,创造的东​​西真棒。

在这种情况下,

这是真棒。

只是想我会更新这个问题,并添加了答案。