【问题标题】:Obfuscate dependencies to single jar with Proguard使用 Proguard 混淆对单个 jar 的依赖项
【发布时间】:2013-06-07 09:12:05
【问题描述】:

我有模块化 maven 应用程序,“module1”依赖于“module2”,“module2”依赖于“module3”等。在 module1 中我有这样的东西:

<profile>
<id>obfuscate</id>
<build>
    <plugins>
        <plugin>
            <groupId>com.pyx4me</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>proguard</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <options>
                    <option>-allowaccessmodification</option>
                    <option>-keep public class com.test.Main { *; }</option>
                </options>
                <libs>
                    <lib>${java.home}/lib/rt.jar</lib>
                </libs>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>net.sf.proguard</groupId>
                    <artifactId>proguard</artifactId>
                    <version>${proguard.version}</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

这会成功创建混淆的“module1”。我想创建具有所有混淆依赖项(混淆模块 1 和模块 2 等)的单个 jar。有可能吗?

【问题讨论】:

    标签: maven jar dependencies obfuscation proguard


    【解决方案1】:

    Maven 阴影插件

    这个插件提供了将工件打包到 uber-jar 中的能力,包括它的依赖项和遮蔽 - 即重命名 - 一些依赖项的包。

    Check it out here.

    【讨论】:

      【解决方案2】:

      尝试maven-proguard-plugin 的&lt;assembly&gt; 选项。引用您希望捆绑到混淆 jar 中的每个依赖项。见examples。

      【讨论】:

        【解决方案3】:

        如果你想将依赖 jars 打包到你的 uber jar 中,请使用 shade 插件!这是一个例子:

        <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>1.4</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <transformers>
                                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"/>
                                </transformers>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
        

        【讨论】:

          猜你喜欢
          • 2016-04-22
          • 2012-06-09
          • 1970-01-01
          • 2014-11-17
          • 1970-01-01
          • 2015-08-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多