始终在安装阶段之前运行proguard-maven-plugin

时间:2016-03-01 12:40:22

标签: maven proguard maven-plugin

我要做的是将多模块应用程序中的某些软件包混淆, 之前将其安装到我的本地存储库中,以便最终的软件包将是一个包含EAR的文件模糊的罐子。

我试图在EAR构建过程中混淆罐子而没有成功。现在我想用混淆的罐子来构建EAR,而不是在构建期间混淆ob。

所以我有以下插件配置:

<plugin>
      <groupId>com.github.wvengen</groupId>
      <artifactId>proguard-maven-plugin</artifactId>
      <version>2.0.11</version>
      <dependencies>
        <dependency>
          <groupId>net.sf.proguard</groupId>
          <artifactId>proguard-base</artifactId>
          <version>${version.proguard}</version>
        </dependency>
      </dependencies>
      <executions>
        <execution>
          <phase>process-classes</phase>
          <goals>
            <goal>proguard</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        ...
      </configuration>
</plugin>

所以我有两个问题:

  1. Progruard总是在安装阶段之后运行,以便EAR构建始终获得未混淆的jar
  2. 我总是要将proguard:proguard添加到maven命令,这当然在多模块项目中失败,其中某些模块不必被混淆
  3. 所以我的问题:

    1. 如何在安装软件包之前对软件包进行模糊处理?
    2. 如何在默认情况下运行这样的插件而不将<phase>:<goal>添加到maven通话中?
    3. 日Thnx。

1 个答案:

答案 0 :(得分:0)

似乎要使proguard插件工作,需要JAR文件。也许您可以通过将proguard插件的proguard目标附加到默认Maven构建生命周期的package阶段(而不是process-classes阶段)来实现此目的,如建议的here by Alexey Shmalko。我不清楚你是否使用maven-shade-plugin,但如果你是,那么将proguard插件配置放在pom.xml 之后 maven-shade-plugin(这是因为这两个插件都附加到同一阶段:package)。

我的期望是,在package阶段之前达到install阶段,它应该会给你你正在寻找的效果。