2010-12-22 88 views
6

Uso Maven y el complemento maven-war para crear mi WAR. Todos los JSP se compilan previamente utilizando jspc-maven-plugin y todas las clases se colocan en un JAR (WEB-INF/lib). Hasta ahora todo funciona bien. Ahora intento configurar proguard-maven-plugin para ofuscar mi código.Cómo ofuscar una aplicación web con Maven y ProGuard

Primero traté de ofuscar todas las clases durante la fase de compilación, pero luego tuve problemas para compilar previamente los JSP. Encontré algunos ejemplos donde se define la fase del paquete. Pero en este caso, no sé cómo abordar mi archivo JAR, que también está empaquetado en WAR. Finalmente intenté simplemente configurar mi WAR como <injar> mywebapp.war </injar >. Pero esto tampoco está funcionando. ¿Qué me estoy perdiendo?

 <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> 
       <obfuscate>true</obfuscate> 
       <includeDependency>false</includeDependency> 
       <injar>${project.artifactId}-v${project.version}.war</injar> 
       <outjar>${project.artifactId}-v${project.version}-obf.war</outjar> 
       <outputDirectory>${project.build.directory}</outputDirectory> 
       <maxMemory>256m</maxMemory> 
       <libs> 
        <!-- Java Runtime --> 
        <lib>${java.home}/../Classes/classes.jar</lib> 
        <lib>${java.home}/../Classes/jce.jar</lib> 
       </libs>     
       <options> 
        <option>-allowaccessmodification</option> 
        <option>-dontskipnonpubliclibraryclasses</option> 
        <option>-dontskipnonpubliclibraryclassmembers</option> 
       </options> 
      </configuration> 
     </plugin> 

¿Tiene alguna pista, ejemplos para hacer esto?

¡Muchas gracias! David

+0

¿Podría proporcionar más información sobre el error que recibió, por favor? – Jcs

Respuesta

6

Eche un vistazo a Maven lifecycles que están disponibles. Específicamente, el ciclo de vida predeterminado . El problema con el que se puede encontrar es que Maven puede garantizarle algunos complementos, como los complementos jar y war, pero otros plugins, como su plugin proguard, puede que no.

Creo que si ha cambiado la fase de ejecución package-prepare-package, que deben obtener los archivos JSP ofuscado antes de que se empaquetan en el archivo JAR y posteriormente en el archivo WAR. Y esa fase no debe interferir con la compilación de las clases que pueda tener.

+0

jgifford25, gracias por apuntarme en la dirección correcta. La fase de preparación del paquete es la clave. Ahora funciona, como se esperaba. Gracias. – David

+3

¿Hay alguna posibilidad de que puedas subir tu configuración fija? – Daniel

+0

Cambiar ' paquete' a ' verificar' –

Cuestiones relacionadas