Tôi đang sử dụng proguard với một ứng dụng mvc mùa xuân và maven.Proguard nói rằng nó không thể tìm thấy bất kỳ lớp học
phần xây dựng pom.xml của tôi trông giống như:
<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>
Tôi cũng đã cố gắng:
<injar>${project.build.finalName}.war</injar>
Khi tôi chạy:
mvn clean install
xây dựng thông báo lỗi:
[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]
Nó dường như đã nhặt jar của tôi một cách chính xác như những thông điệp trước khi hiển thị:
[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, ....
Ngoài ra, những tùy chọn bạn có đề nghị tôi sử dụng không? Đây là một MVC mùa xuân vì vậy tôi có chú thích như:
- @Autowired
- @Service
- @Repository
- @Controller
Vì vậy, bất kỳ của những lớp học/lĩnh vực không nên được đổi tên thành tôi sẽ tưởng tượng.
(Mục tiêu của tôi là làm cho nó trở nên đau đầu đối với một người nào đó dịch ngược lại, như vậy họ không thể dịch ngược và sử dụng mã này. Chúng sẽ không cho phép họ sử dụng mã đó. trừ khi họ lại viết nó. tôi không có bất kỳ thuật toán ưa thích vì vậy tôi không có gì thực sự ẩn mình trong sự tôn trọng điều đó.)
cập nhật
Hãy để tôi được rõ ràng ở đây, MVC mùa xuân của tôi sử dụng maven cho một số lý do (tôi mới maven) khi thực hiện một cài đặt sạch mvn sản xuất cả một tập tin myapp.war và một chiến tranh nổ myapp/(đây là những gì tôi muốn triển khai trong sản xuất, không phải là tập tin myapp.war)
thư mục myapp của tôi có:
/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/
Vì vậy Proguard nên obfuscating trong thư mục/mục tiêu/myapp/web-inf/classes thư mục phải không? Làm thế nào để tôi yêu cầu nó làm như vậy?
Cập nhật 2
Tôi nhận này ngay bây giờ:
OK, tôi không nhận được: thất bại trong việc thực hiện mục tiêu ... Proguard .. Không thể đổi tên/Users/me/dev/git/project1/myapp/target/myapp/web-inf/lớp học (xem phần cập nhật của tôi cho những gì tôi đã thay đổi trong pom.xml của tôi)
Tôi đã thay đổi pom của mình.xml với:
<configuration>
<obfuscate>true</obfuscate>
<injar>${project.build.finalName}/WEB-INF/classes/</injar>
<inFilter>com/myapp/**</inFilter>
</configuration>
Xem câu trả lời và giải pháp của tôi bên dưới, ProGuard không hỗ trợ cấu hình cụ thể này –