2010-12-22 147 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