Tôi đang sử dụng Spring Boot với bootRepackage gradle để xây dựng tệp jar phát hành. Dự án của tôi cần mã obfuscator trước khi giao cho khách hàng. Tôi đã thử proguard và một số công cụ khác nhưng nhiều vấn đề xảy ra. Tôi có thể có lời khuyên làm thế nào để cấu hình các công cụ như vậy cho khởi động mùa xuân.Bộ khởi động mùa xuân obfuscator
tôi đã cố gắng ProGuard với những cấu hình
-injars ./build/libs/webservice-1.0.jar
-outjars ./build/libs/webservice-obs-1.0.jar
-libraryjars <java.home>/lib/rt.jar
-keep class !myapplicationpackage.** { *; }
-keep class myapplicationpackage.Application { *; }
-ignorewarnings
-keepdirectories **
-dontshrink
-keepattributes *Annotation*
-keepclassmembers class com.yumyumlabs.** { java.lang.Long id; }
-keepnames class com.yumyumlabs.** implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
-keepclassmembers class * {
@org.springframework.beans.factory.annotation.Autowired *;
@org.springframework.beans.factory.annotation.Qualifier *;
@org.springframework.beans.factory.annotation.Value *;
@org.springframework.beans.factory.annotation.Required *;
@org.springframework.context.annotation.Bean *;
@javax.annotation.PostConstruct *;
@javax.annotation.PreDestroy *;
@org.aspectj.lang.annotation.AfterReturning *;
@org.aspectj.lang.annotation.Pointcut *;
@org.aspectj.lang.annotation.AfterThrowing *;
@org.aspectj.lang.annotation.Around *;
}
-keep @org.springframework.stereotype.Service class *
-keep @org.springframework.stereotype.Controller class *
-keep @org.springframework.stereotype.Component class *
-keep @org.springframework.stereotype.Repository class *
-keep @org.springframework.cache.annotation.EnableCaching class *
-keep @org.springframework.context.annotation.Configuration class *
-keepattributes Signature
-dontwarn com.yumyumlabs.web.controllers.auth.AuthController
-dontwarn com.google.apphosting.api.ReflectionUtils
-dontwarn sun.misc.Unsafe
-dontwarn org.tartarus.snowball.**
-dontnote
-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault
Nhưng tạo jar không thể chạy
java.lang.IllegalStateException: Unable to open nested entry 'lib/spring-boot-starter-web-1.2.0.RELEASE.jar'. It has been compressed and nested jar files must be stored without compression. Please check the mechanism used to create your executable jar file
at org.springframework.boot.loader.jar.JarFile.createJarFileFromFileEntry(Unknown Source)
at org.springframework.boot.loader.jar.JarFile.createJarFileFromEntry(Unknown Source)
at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(Unknown Source)
at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(Unknown Source)
at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchives(Unknown Source)
at org.springframework.boot.loader.ExecutableArchiveLauncher.getClassPathArchives(Unknown Source)
at org.springframework.boot.loader.Launcher.launch(Unknown Source)
at org.springframework.boot.loader.JarLauncher.main(Unknown Source)
Vui lòng giải thích chi tiết hơn những gì bạn đã thử và những vấn đề bạn có, để chúng tôi có thể giúp bạn giải quyết những vấn đề này. – Jesper
Vấn đề rất đơn giản nếu bạn có một cái lọ có phụ thuộc lồng nhau và cố gắng làm xáo trộn với proguard, nó sẽ nén các lọ lồng nhau và bộ nạp khởi động lò xo không thể nạp các lọ đó. – telebog
Bạn có quản lý để làm xáo trộn ứng dụng Spring-Boot của mình không? – Modi