2010-12-22 150 views
6

我使用Maven和maven-war-plugin來構建我的WAR。所有的JSP都是使用jspc-maven-plugin預編譯的,所有的類都被放入JAR(WEB-INF/lib)中。到目前爲止一切正常。現在我嘗試配置proguard-maven-plugin來模糊我的代碼。如何使用Maven和ProGuard混淆webapp

首先,我試圖在編譯階段混淆所有類,但後來在編譯JSP時遇到了麻煩。我發現了一些封裝階段被定義的例子。但是在這種情況下,我不知道如何解決我的JAR文件,這個文件被放入WAR中。最後,我試圖簡單地將我的WAR設置爲<injar> mywebapp.war </injar >。但是這也不起作用。我錯過了什麼?

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

你有任何提示,例子來完成這件事嗎?

非常感謝! 大衛

+0

您能否提供有關您得到的錯誤的更多信息? – Jcs 2010-12-28 08:03:47

回答

6

看看Maven lifecycles是可用的。具體來說默認生命週期。你可能會遇到的問題是,Maven可以保證一些插件,比如jar和war插件,但是其他插件,比如你的proguard插件,它可能不會。

我認爲如果您將執行階段從package更改爲prepare-package,那麼應該在JSP文件打包到JAR文件並隨後到WAR文件中之前將其進行模糊處理。而且這個階段不應該干擾編譯你可能擁有的任何類。

+0

jgifford25,謝謝你指點我正確的方向。準備階段是關鍵。正如預期的那樣,它現在起作用謝謝。 – David 2011-01-19 10:52:12