Я использую Spring Boot 3.2.5 и Java 21.
Оба jar-файла создаются, начальный и запутанный, но запутанный не содержит классов из моих пакетов приложений.
Это моя конфигурация proguard:
Код: Выделить всё
# Obfuscation settings
-useuniqueclassmembernames
-classobfuscationdictionary obfuscation-dictionary.txt
-packageobfuscationdictionary obfuscation-dictionary.txt
# General options
-verbose
-dontoptimize
-dontshrink
-dontpreverify
-allowaccessmodification
-adaptclassstrings
-keepdirectories
-ignorewarnings
# Keep annotations
-keepattributes *Annotation*
-keepattributes Signature
-keepattributes Exceptions
# Keep main classes
-keep public class * extends org.springframework.boot.web.support.SpringBootServletInitializer
-keep public class com.my.package.Application {
public static void main(java.lang.String[]);
}
-keep,allowobfuscation class com.my.package.Application.** { *; }
-keep interface com.my.package.** { *; }
-keepclasseswithmembers public class * {
public static void main(java.lang.String[]);
}
# If you use Lombok, you might need this
-keep class lombok.** { *; }
-dontwarn lombok.**
-keepclassmembers class * {
@lombok.Setter *;
@lombok.Getter *;
@lombok.Cleanup *;
@lombok.ToString *;
@lombok.EqualsAndHashCode *;
@lombok.AllArgsConstructor *;
@lombok.NoArgsConstructor *;
@lombok.Builder *;
}
# Keep all classes in specific packages
-keep class my.package.** { *; }
-keep class org.springframework.boot.** { *; }
-keep class org.springframework.boot.loader.** { *; }
-dontwarn org.springframework.boot.loader.**
# Keep Spring Boot specific classes
-keep class org.springframework.boot.loader.jar.** { *; }
-keep class org.springframework.boot.loader.zip.** { *; }
-keep class java.util.jar.JarFile { *; }
# Keep ZIP related classes
-keep class java.util.zip.** { *; }
-dontwarn java.util.zip.**
# Keep all subclasses of InputStream
-keep class * extends java.io.InputStream { *; }
-keep class * extends java.util.zip.InflaterInputStream { *; }
# Keep specific classes and their inner classes
-keep class org.springframework.boot.loader.jar.NestedJarFile { *; }
-keep class org.springframework.boot.loader.jar.NestedJarFile$* { *; }
-keep class org.springframework.boot.loader.jar.ZipInflaterInputStream { *; }
-keep class org.springframework.boot.loader.zip.ZipContent$Entry { *; }
# Keep specific methods and fields
-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 *;
@org.springframework.context.annotation.Primary *;
@org.springframework.boot.context.properties.ConfigurationProperties *;
@org.springframework.boot.context.properties.EnableConfigurationProperties *;
@javax.inject.Inject *;
@javax.annotation.PostConstruct *;
@javax.annotation.PreDestroy *;
@org.springframework.security.access.prepost.PreAuthorize *;
}
# Keep enums
-keepclassmembers enum * {
*;
}
# Keep Serializable classes
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient ;
!private ;
!private ;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
# Keep getters and setters
-keepclassmembers class * {
*** get*();
void set*(***);
}
# Keep specific annotations
-keep @org.springframework.cache.annotation.EnableCaching class *
-keep @org.springframework.context.annotation.Configuration class *
-keep @org.springframework.boot.context.properties.ConfigurationProperties class *
-keep @org.springframework.boot.autoconfigure.SpringBootApplication class *
# Keep specific directories
-keepdirectories org.springframework.boot.autoconfigure
Код: Выделить всё
org.springframework.boot
spring-boot-maven-plugin
3.2.5
repackage
package
repackage
com.my.package.Application
com.github.wvengen
proguard-maven-plugin
2.6.1
package
proguard
7.3.2
${project.build.finalName}.jar
${project.build.finalName}-obfuscated.jar
true
${project.basedir}/proguard.cfg
${java.home}/lib/jrt-fs.jar
-verbose
com.guardsquare
proguard-base
7.3.2
Спасибо!
Я попробовал отладку, у меня получилось журналы
Код: Выделить всё
[proguard] Number of obfuscated classes: 41
[proguard] Number of obfuscated fields: 196
[proguard] Number of obfuscated methods: 121
Это может быть что-то в файле proguard_map.txt упаковка или заказ упаковки, но я не могу разобраться.
Подробнее здесь: https://stackoverflow.com/questions/791 ... pring-boot