O maven-proguard é um plugin para obfuscação de código, o que ele faz é tornar um pouco mais dificil o entendimento do programa quando o mesmo é descompilado.
Para utilizar o plugin do proguard integrado com o maven precisamos adicionar no pom.xml do projeto a seguinte declaração:
<plugin> <groupId>com.pyx4me</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.0.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>proguard</goal> </goals> </execution> </executions> <configuration> <outjar>${project.artifactId}-pg-${project.version}.jar</outjar> <options> <option>-keep public class br.com.javadev.proguard.HelloWorld { public static void main(java.lang.String[]); }</option> </options> <libs> <lib>${env.JAVA_HOME}/jre/lib/rt.jar</lib> </libs> </configuration> </plugin>
Uma vez o plugin configurando no projeto assim que o mesmo for compilado, na fase packaging ele fará a aplicação do obfuscator no código, isso acontece devido a configuração:
<executions> <execution> <phase>package</phase> <goals> <goal>proguard</goal> </goals> </execution> </executions>
Ao executar o comando mvn -e install, ao final do processo será gerado um arquivo com o nome definido na tag:
<outjar>${project.artifactId}-pg-${project.version}.jar</outjar>
Será criado na pasta target do projeto dois jar, um deles sem a aplicação do obfuscator e o outro com obfuscator.
Se você descompilar alguma classe do jar "obfuscado" você vai ver um código um pouco mais dificil de ser analisado, pois os nomes dos métodos e atributos não serão os mesmos que você definiu.
Um detalhe é que na classe onde contém o método main as regras não são aplicadas, pois se fosse, você não conseguiria executar o programa. Para isso precisamos definir uma opção para que essa classe não tenha seu método main alterado.
<option>-keep public class br.com.javadev.proguard.HelloWorld { public static void main(java.lang.String[]); }</option>
Antes de continuar vamos fazer o download de um exemplo, link: http://www.javadev.com.br/downloads/plugins/proguard.rar.
Descompactar o projeto e executar o comando:
mvn -e install
Serão gerados dois jars dentro da pasta target
Dica:
Caso queira fazer um teste, executando o programa, podemos utilizar o exec-maven-plugin, que está configurado no pom.xml do projeto que você fez o download, digitando o seguinte:
mvn -e exec:java