Обфусцировать зависимости в одну банку с Proguard

У меня есть модульное приложение 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". Я хочу создать один jar со всеми запутанными зависимостями (запутанный module1 и module2 и т. Д.). Является ли это возможным?

3 ответа

Решение

Плагин Maven Shade

Этот плагин предоставляет возможность упаковать артефакт в uber-jar, включая его зависимости, и затемнить - т.е. переименовать - пакеты некоторых из зависимостей.

Проверьте это здесь.

Попробуйте <assembly> вариант maven-proguard-plugin, Сделайте ссылки на каждую из зависимостей, которые вы хотели связать в запутанную банку. Смотрите примеры.

Если вы хотите, чтобы jar зависимостей пакетов был в вашем 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>
Другие вопросы по тегам