---
title: Closure Compiler Maven Plugin
source: https://tdn.totvs.com/display/fluig/Closure+Compiler+Maven+Plugin
path: \Plataforma Documentação técnica\Recurso de Páginas e Widgets (WCM)\Construção de Widgets e Layouts\Widgets\Closure Compiler Maven Plugin.md
---
- 1 [Introdução](#ClosureCompilerMavenPlugin-Introdução)
- 2 [Fim do YUI Compressor?](#ClosureCompilerMavenPlugin-FimdoYUICompressor?)
- 3 [Configurando o plugin](#ClosureCompilerMavenPlugin-Configurandooplugin)
## Introdução
Essa documentação tem como objetivo explicar como é feita a configuração do plugin [Closure compiler Maven Plugin](https://github.com/blutorange/closure-compiler-maven-plugin)
Hoje no Fluig plataforma utiliza-se o plugin YUI compressor para minificar arquivos CSS e JS. Porém o mesmo permanece inativo e sem atualização desde 2013 ficando um pouco ultrapassado e nos impossibilitando de utilizar novas tecnologias, como o ES6.
## Fim do YUI Compressor?
Não será possível remover completamente o YUI-Compressor de nosso produto pois o Closure Compiler não irá processar arquivos CSS, apenas JS. Sendo necessário a permanência do antigo para minificar a folha de estilo.
## Configurando o plugin
Os plugins são configurados nos pom.xml de cada projeto. Primeiramente devemos fazer com que o YUI-Compressor pare de minificar os arquivos JS, para isso na configuração já existente precisamos adicionar a seguinte tag dentro da configuração.
No exemplo estaremos utilizando a widget: [sample-component-widget](https://git.fluig.com/projects/SAMPLES/repos/projetos/browse/sample-component/sample-component-widget)
**Ignorando arquivos JS - YUI Compressor**
```
…
**/*.js
…
```
Feito isso, podemos configurar o Closure Compiler.
**Exemplo de configuração usada no pom: sample-component-widget**
```
com.github.blutorange
closure-compiler-maven-plugin
2.21.0
default-minify
minify
generate-resources
false
${project.basedir}/src
UTF-8
main/webapp/resources
resources
**/*.js
#{path}/#{basename}.#{extension}
**/${project.basedir}
**/*.min.js
**/*-min.js
SIMPLE_OPTIMIZATIONS
OFF
OFF
OFF
OFF
OFF
false
false
NO_TRANSPILE
false
true
```
A documentação do mesmo pode ser acessada aqui:
Onde há a explicação de cada tag utilizada - abaixo estará a explicação de algumas configurações específicas.
- **ClosureCompilationLevel** - irá definir o quão avançada será a minificação - no nível **ADVANCED\_OPTIMIZATIONS** é possível ter a ofuscação dos arquivos JS.
- **Excludes** - Utilizamos o excludes para excluir algum tipo de arquivo específico da compilação.
- **Skip** - Ignora a execução do plugin dentro do módulo declarado.
Atenção
Atualmente, caso o plugin não encontre um js dentro do source dir definido ele quebra. Por isso, em projetos onde o pom pai não possui arquivos a serem minificados, passamos o skip como true. Porém é necessário que em seus filhos haja a configuração:
```
com.github.blutorange
closure-compiler-maven-plugin
false
```
Atenção
Hoje a minificação realizada nos arquivos javaScript pelo plugin pode ocasionar um conflito entre o template de string e o mecanismo de internacionalização i18n, podendo gerar inconsistências. Caso você não use internacionalização em seu JS, template string irá funcionar normalmente. Estamos trabalhando a fim de proporcionar uma solução em próximas versões.