Как запутать веб-приложение, используя Maven и ProGuard - PullRequest
6 голосов
/ 23 декабря 2010

Я использую Maven и maven-war-plugin для создания моей WAR.Все JSP предварительно скомпилированы с использованием jspc-maven-plugin, и все классы помещаются в JAR (WEB-INF / lib).Пока все отлично работает.Теперь я пытаюсь настроить подключаемый модуль proguard-maven-plugin, чтобы запутать мой код.

Сначала я пытался запутать все классы на этапе компиляции, но потом у меня возникли проблемы с предварительной компиляцией JSP.Я нашел несколько примеров, где определяется фаза пакета.Но в этом случае я не знаю, как обратиться к моему файлу JAR, который полностью упакован в WAR.Наконец, я попытался просто установить мою WAR как mywebapp.war .Но это тоже не работает.Чего мне не хватает?

        <plugin>
            <groupId>com.pyx4me</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <version>2.0.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>proguard</goal>
                    </goals>
                </execution>
            </executions>               
            <configuration>
                <obfuscate>true</obfuscate>
                <includeDependency>false</includeDependency> 
                <injar>${project.artifactId}-v${project.version}.war</injar>
                <outjar>${project.artifactId}-v${project.version}-obf.war</outjar> 
                <outputDirectory>${project.build.directory}</outputDirectory> 
                <maxMemory>256m</maxMemory>
                <libs>
                    <!--  Java Runtime -->
                    <lib>${java.home}/../Classes/classes.jar</lib>
                    <lib>${java.home}/../Classes/jce.jar</lib>
                </libs>                 
                <options>
                    <option>-allowaccessmodification</option>
                    <option>-dontskipnonpubliclibraryclasses</option>
                    <option>-dontskipnonpubliclibraryclassmembers</option>
                </options>
            </configuration>
        </plugin>

У вас есть какие-нибудь советы, примеры, как это сделать?

Большое спасибо!David

1 Ответ

6 голосов
/ 23 декабря 2010

Взгляните на доступные жизненные циклы Maven . В частности, жизненный цикл по умолчанию . Проблема, с которой вы можете столкнуться, состоит в том, что Maven может гарантировать на некоторые плагины, такие как jar и war, но другие плагины, такие как ваш proguard, могут не работать.

Я думаю, что если вы изменили фазу выполнения с package на prepare-package, это должно привести к обфускации файлов JSP перед их упаковкой в ​​файл JAR и затем в файл WAR. И этот этап не должен мешать компиляции любых классов, которые у вас могут быть.

...