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