2012-02-14 82 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),有人聰明走來,創造的東​​西真棒。

在這種情況下,

這是真棒。

只是想我會更新這個問題,並添加了答案。