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, поэтому у меня есть аннотации, такие как:
@Autowired@Обслуживание@Repository@ControllerТак что ни один из этих классов / полей не должен быть переименован, как я себе представляю.
(Моя цель - сделать головную боль для тех, кто декомпилирует, чтобы они не могли просто декомпилировать и использовать код. Запутывание позволит им использовать его, но они не смогут поддерживать кодовую базу, если не перезапустят напишите это. У меня нет причудливых алгоритмов, поэтому мне нечего скрывать.)
Обновить
Позвольте мне пояснить, что мой весенний mvc по какой-то причине использует maven (я новичок в 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>