Skip to content

Instantly share code, notes, and snippets.

@garcia-jj
Created December 30, 2010 15:22
Show Gist options
  • Save garcia-jj/759892 to your computer and use it in GitHub Desktop.
Save garcia-jj/759892 to your computer and use it in GitHub Desktop.
Minify
<target name="minify">
<property name="static.library.dir" value="${build.dir}/${project.web}/static/library" />
<property name="yuicompressor.jar" value="/opt/yuicompressor-2.4.2/build/yuicompressor-2.4.2.jar" />
<fileset dir="${project.web}/web/static/library" includes="*.js" excludes="*.min.js" id="alljs" />
<fileset dir="${project.web}/web/static/library" includes="*.css" excludes="*.min.css" id="allcss" />
<delete file="${build.dir}/${project.web}/static/library/all.css" />
<concat destfile="${build.dir}/${project.web}/static/library/all.css" fixlastline="true">
<fileset refid="allcss" />
</concat>
<java jar="${yuicompressor.jar}" fork="true">
<arg value="${build.dir}/${project.web}/static/library/all.css"/>
<arg value="-o"/>
<arg value="${build.dir}/${project.web}/static/all.min.css"/>
</java>
<delete file="${build.dir}/${project.web}/static/library/all.js" />
<concat destfile="${build.dir}/${project.web}/static/library/all.js" fixlastline="true">
<fileset refid="alljs" />
</concat>
<java jar="${yuicompressor.jar}" fork="true">
<arg value="${build.dir}/${project.web}/static/library/all.js"/>
<arg value="-o"/>
<arg value="${build.dir}/${project.web}/static/all.min.js"/>
</java>
</target>
@leandroadacosta
Copy link

Fala Garcia,

Testei aqui e a versão 2.4.2 do yuicompressor não funciona, dá o seguinte erro: "[java] Failed to load Main-Class manifest attribute from..."

Já a versão 2.3.6 funciona perfeitamente.

Para não ter problemas, tive também que deletar o arquivo antes de concatenar, tanto no js quanto no css.
No concat existe o atributo fixlastline="true", é bacana pois ele ajusta a quebra de linha da última linha de cada arquivo na hora de juntar.

Repositório do Maven:
http://mvnrepository.com/artifact/com.yahoo.platform.yui/yuicompressor

Abraço!

@garcia-jj
Copy link
Author

Oi Leandro. Muito obrigado pelo feedback.

Estou testando com a versão 2.4.2 que está no site do YUI. Será que há alguma diferença entre o que tem no Maven? Me manda por email ou MP esse stacktrace, aí posso ver onde é o erro.

Essa task que passei é um pequeno pedaço do meu ant-build. Nele eu faço um delete no diretório de build, por isso eu não tive esse ero. vou adicionar um delete então para evitar esse erro. Quanto ao fixlastline eu não conhecia mesmo, vou adicionar ele no build.

Assim que a correria passar vou enviar as alterações para o autor do vraptor-scaffold.

@rodolfoliviero
Copy link

Garcia mto bom o script e obrigado por compartilhar :).
Eu fiz a integração no vraptor-scaffold e está funcionando porém com a versão 2.3.6, eu tive o mesmo problema que o Leandro.
Pelo fato do scaffold usar o ivy ele baixa o artefato do repo do maven.
Acredito que o jar que vc está usando não é o mesmo pois o jar que está no repo do maven vem com uma dependencias o rhino js vc pode ver aqui http://mvnrepository.com/artifact/com.yahoo.platform.yui/yuicompressor/2.4.2
eu tentei mudar a task para carregar o jar do rhino no classpath mas sem sucesso.

O build.xml do vraptor-scaffold está aqui https://github.com/caelum/vraptor-scaffold/blob/master/lib/generators/app_generator/templates/build.xml

@garcia-jj
Copy link
Author

Rodolfo, vou dar uma olhada nisso e te dou um retorno. Realmente a versão que eu usei é a do site do YU.

Abraços

@garcia-jj
Copy link
Author

Oi pessoal, desculpem a grande demora em responder. Analisei as versões do YUI baixadas pelo site do Yahoo Developer e do Maven, e a diferença é que no Maven o Rhino é distribuído separado na versão 2.4.2. Notem que o jar é 800K menor que a versão anterior 2.3.6. Aqui no meu caso eu coloquei o rhino no classpath e funcionou bem.

java -cp build-lib/minify/js-1.7R2.jar:build-lib/minify/yuicompressor-2.4.2.jar com.yahoo.platform.yui.compressor.YUICompressor site.css

Obrigado pelo reporte.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment