2010-12-22 6 views
6

Ich benutze Maven und das maven-war-plugin um meinen WAR zu erstellen. Alle JSPs werden mit dem jspc-maven-plugin vorkompiliert und alle Klassen werden in ein JAR (WEB-INF/lib) gestellt. Bis jetzt funktioniert alles gut. Jetzt versuche ich das Proguard-Maven-Plugin zu konfigurieren, um meinen Code zu verschleiern.Wie man eine Webapp mit Maven und ProGuard verschleiert

Zuerst habe ich versucht, alle Klassen während der Kompilierphase zu verschleiern, aber dann bekomme ich Probleme beim Kompilieren der JSPs. Ich habe einige Beispiele gefunden, in denen die Paketphase definiert ist. Aber in diesem Fall weiß ich nicht, wie ich meine JAR-Datei ansprechen soll, die schon in den WAR verpackt ist. Schließlich versuchte ich einfach, meinen WAR als <injar> mywebapp.war </injar > einzustellen. Aber das funktioniert auch nicht. Was vermisse ich?

 <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> 

Haben Sie irgendwelche Hinweise, Beispiele, um dies zu tun?

Vielen Dank! David

+0

Könnten Sie uns mehr Informationen über den Fehler geben, den Sie bekommen haben? – Jcs

Antwort

6

Werfen Sie einen Blick auf die verfügbaren Maven lifecycles. Speziell der Standardlebenszyklus. Das Problem, auf das Sie möglicherweise stoßen, ist, dass Maven auf einigen Plugins, wie den JAR- und WAR-Plugins, garantieren kann, aber andere Plugins, wie Ihr Proguard-Plugin, kann es nicht.

Ich denke, wenn Sie die Ausführungsphase von package zu prepare-package geändert haben, sollte das die JSP-Dateien verschleiern, bevor sie in die JAR-Datei und anschließend in die WAR-Datei gepackt werden. Und diese Phase sollte nicht mit der Zusammenstellung von Klassen kollidieren, die Sie haben könnten.

+0

jgifford25, danke, dass du mich in die richtige Richtung weist. Die Vorbereitungspaketphase ist der Schlüssel. Jetzt funktioniert es wie erwartet. Vielen Dank. – David

+3

Gibt es eine Chance, dass du deine feste Konfiguration hochladen kannst? – Daniel

+0

Ändern ' Paket' zu ' überprüfen' –