企业Java应用程序上的Proguard配置

时间:2012-01-08 02:20:49

标签: maven maven-2 obfuscation maven-plugin proguard

我试图在Maven项目中使用proguard这是一个混淆插件,当我运行它时我有一个错误:

  

无法在项目MavenEnterpriseApp-ear上执行目标com.pyx4me:proguard-maven-plugin:2.0.4:proguard(默认):混淆失败(结果= 1) - > [帮助1]

当我用-e或-X运行maven时我有:

  

org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目MavenEnterpriseApp-ear上执行目标com.pyx4me:proguard-maven-plugin:2.0.4:proguard(默认):混淆失败(结果= 1 )       在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)       在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)       在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)       在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)       在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)       在org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)       在org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)       在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)       在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)

我的插件配置是:

<plugin>
    <groupId>com.pyx4me</groupId>
    <artifactId>proguard-maven-plugin</artifactId>
    <version>2.0.4</version>
    <executions>
        <execution>
            <phase>prepare-package</phase>
            <goals>
                <goal>proguard</goal>
            </goals>
        </execution>
    </executions>               
    <configuration>
        <obfuscate>true</obfuscate>
        <includeDependency>false</includeDependency> 
        <injar>${project.artifactId}-v${project.version}.ear</injar>
        <outjar>${project.artifactId}-v${project.version}-obf.ear</outjar> 
        <outputDirectory>${project.build.directory}</outputDirectory> 
        <maxMemory>256m</maxMemory>

    </configuration>
   </plugin>

正如你所看到的那样,我试图模仿耳朵。在官方页面中:

  

injar:指定输入jar名称(或战争, 耳朵 ,拉链)   要处理的申请。您可以指定一个类目录,例如   &#39;类&#39 ;.这种方式插件将处理类而不是jar。   您需要将执行绑定到阶段&#39;编译&#39;要么   &#39;过程的类&#39;在这种情况下。

该项目是一个Maven Enterise应用程序项目,基本上我有2个子项目一个有JPA和EJB3资源,另一个是一个带有jsf结构的web项目。当我运行Maven时,我获得了一个耳朵,在这里我有2个二进制文件,一个罐子和一个战争。我有三个 问题:

首先)我想插入什么pom?现在我正在使用pom进入EAR项目,你可以看到:

enter image description here

第二)我可以混淆耳朵吗?

第三)如果第二个是假的:我怎么能特定地混淆耳朵?我试图指定罐子,但我有同样的错误:

  

无法在项目MavenEnterpriseApp-ear上执行目标com.pyx4me:proguard-maven-plugin:2.0.4:proguard(默认):混淆失败(结果= 1) - &gt; [帮助1]

1 个答案:

答案 0 :(得分:1)

尝试将proguard的阶段从“prepare-package”更改为“process-classes”,将injar选项更改为“classes”,并告诉我它是否无效。

HTH。