【问题标题】:Always run proguard-maven-plugin before install phase在安装阶段之前始终运行 proguard-maven-plugin
【发布时间】:2016-03-01 12:40:22
【问题描述】:

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

我试图在 EAR 构建过程中混淆 jar,但没有成功。现在我想用混淆的 jars 构建 EAR,而不是在构建过程中混淆。

所以我有以下插件配置:

<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 构建始终获得未混淆的 jars
  2. 我总是必须将 proguard:proguard 添加到 maven 命令中,这在不需要混淆某些模块的多模块项目中当然会失败

所以我的问题:

  1. 如何在安装包之前对其进行混淆处理?
  2. 如何在不向 maven 调用添加 &lt;phase&gt;:&lt;goal&gt; 的情况下使这样的插件默认运行?

谢谢。

【问题讨论】:

    标签: maven proguard maven-plugin


    【解决方案1】:

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

    我的期望是,由于package 阶段是在install 阶段之前实现的,它应该会给你想要的效果。

    【讨论】:

    • 我已经知道这个链接 :D 将插件移动到package 阶段没有区别。我没有使用maven-shade-plugin,因为我只想混淆包而不是它的依赖项。为此我添加了&lt;injar&gt;classes&lt;/injar&gt;
    猜你喜欢
    • 2023-01-24
    • 1970-01-01
    • 2012-07-04
    • 2012-03-03
    • 2012-11-16
    • 2012-04-08
    • 1970-01-01
    • 2012-11-21
    • 2018-07-09
    相关资源
    最近更新 更多