Maven Proguard обрабатывает библиотечный jar, от которого будут зависеть другие приложения, один

#maven-plugin #maven-3 #proguard

#maven-плагин #maven-3 #proguard

Вопрос:

Вот как выглядит мой плагин сборки в stanza:

 <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>
        <options>
            <option>-dontshrink</option>
            <option>-dontnote</option>
            <option>-allowaccessmodification</option>
            <option>-dontskipnonpubliclibraryclasses</option>
            <option>-dontskipnonpubliclibraryclassmembers</option>
        </options>
        <libs>
            <lib>${java.home}/lib/rt.jar</lib>
            <lib>${java.home}/lib/jsse.jar</lib>
        </libs>
    </configuration>
</plugin>
  

Вот что я получаю в результате выполнения mvn clean package

[proguard] Error: You have to specify '-keep' options for the shrinking step.

Как мне указать параметры сохранения для библиотеки, в которой я просто хочу запутывание?

Комментарии:

1.Cfr. Руководство по ProGuard > Устранение неполадок > Ошибка: вы должны указать параметры ‘-keep’

2. это даже не объясняет, как решить мою проблему, очевидно, мне нужно указать -keep параметры, но на самом деле ничто не дает мне примера того, что мне нужно указать в pom.xml файле Maven. Это просто повторяет то, что уже достаточно ясно сказано в сообщениях об ошибках. И эта ссылка также не имеет ничего общего с Maven.

3. Приведенный вами плагин сборки в stanza уже содержит теги <option>, которые содержат параметры ProGuard. Вы можете добавить — сохранить параметры там (очевидно?). Насколько я могу судить, это не имеет ничего общего с Maven или pom.xml действительно.

4. нет документации о том, как должен выглядеть мой -keep вариант?

5. Руководство ProGuard содержит много информации (вы пропустили это?). Примечательно: руководство по ProGuard > Примеры > Типичная библиотека.

Ответ №1:

Вы должны определить с помощью -keep опции точки входа вашего приложения, потому что вы не можете запутать его. Например, если ваш основной класс запутан, он будет переименован, и вы не сможете его запустить. То же самое для общедоступных интерфейсов ваших API.