Proguard говорит, что не может найти никаких классов

Я использую proguard с приложением Spring mvc и maven.

Мой раздел сборки pom.xml выглядит так:

<build>
        <finalName>myapp</finalName>
        <plugins>
           <plugin>
                <groupId>com.pyx4me</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>proguard</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <obfuscate>true</obfuscate>
                    <!--<options>-->
                        <!--<option>-keep public class</option>-->
                    <!--</options>-->
                    <injar>${project.build.finalName}</injar>
                    <injar>${project.build.finalName}</injar>
                    <inFilter>com.myapp.*</inFilter>
                </configuration>
            </plugin>
         </plugins>

Я также пробовал:

<injar>${project.build.finalName}.war</injar>

Когда я запускаю:

mvn clean install

Сообщение об ошибке сборки:

[proguard] Reading program war [/Users/me/dev/git/myproject/myapp/target/myapp.war] (filtered)
 [proguard] Error: The input doesn't contain any classes. Did you specify the proper '-injars' options?

ERROR] Failed to execute goal com.pyx4me:proguard-maven-plugin:2.0.4:proguard (default) on project myapp: Obfuscation failed (result=1) -> [Help 1]

Кажется, моя банка была правильно поднята, поскольку сообщения перед отображением :

[INFO] --- proguard-maven-plugin:2.0.4:proguard (default) @ myapp ---
[INFO] execute ProGuard [-injars, '/Users/me/dev/gitserver/myproject/myapp/target/myapp.war'(!META-INF/maven/**,com.myapp.*), -outjars, '/Users/me/dev/git/myproject/myapp/target/myapp_pg.war', -libraryjars, ....

Кроме того, какие варианты вы предлагаете мне использовать? Это весенний mvc, поэтому у меня есть аннотации вроде:

  1. @Autowired
  2. @Service
  3. @Repository
  4. @Controller

] Таким образом, я полагаю, что ни один из этих классов / полей не следует переименовывать.

(Моя цель - просто сделать это головной болью для тех, кто декомпилирует, чтобы они не могли просто декомпилировать и использовать код. Обфускация позволит им использовать его, но они не смогут поддерживать кодовую базу, если только они его переписывают. У меня нет никаких необычных алгоритмов, поэтому мне нечего скрывать в этом отношении.)

Обновление

Позвольте мне пояснить, что мой весенний mvc по какой-то причине использует maven (я ' m, новый для maven) при выполнении чистой установки mvn создается как файл myapp.war, так и взорванный war myapp / (это то, что я хочу развернуть в производственной среде, а не файл myapp.war)

В моей папке myapp есть:

/target/myapp/
/target/myapp/meta-inf (empty folder)
/target/myapp/web-inf
/target/myapp/web-inf/classes (com.myapp. ...)
/target/myapp/web-inf/lib/
/target/myapp/web-inf/ web.xml, application.xml (for spring)
/target/myapp/web-inf/views/

Значит, proguard должен запутываться в папке / target / myapp / web-inf / classes, верно? Как мне сказать ему это сделать?

Обновление 2

Теперь я получаю следующее:

Хорошо, я не получаю: не удалось выполнить цель ... proguard ..Не могу переименовать / Users / me / dev / git / project1 / myapp / target / myapp / web-inf / classes (см. Мой раздел обновлений, чтобы узнать, что я изменил в моем pom.xml)

Я изменил свой pom.xml с:

            <configuration>
                <obfuscate>true</obfuscate>

                <injar>${project.build.finalName}/WEB-INF/classes/</injar>
                <inFilter>com/myapp/**</inFilter>
            </configuration>
7
задан Blankman 16 January 2012 в 01:43
поделиться