我正在尝试使用 Proguard 来混淆Spring Boot应用程序。 Proguard按字母顺序重命名包和类,所以我将使用 a.a,a.b,a.c,b.a和b.b 等类<...
我的问题是@RestController,@ Configuration,带有相同名称的@Service注释类(即使在不同的包中)会产生以下异常
在上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.BeanDefinitionStoreException:无法解析配置类[com.test.sirh.CoreApp];嵌套异常是
org.springframework.context.annotation.ConflictingBeanDefinitionException:bean类[com.test.sirh.gac]的注释指定bean名称'c'与同名和类的现有非兼容bean定义冲突[com.test.sirh.bc]
保留带有这些注释的类可以解决问题,但我最终会得到几乎一半没有混淆的类。 无论如何,Proguard按字母顺序生成类(不会改变),但不会从每个包中的“a”返回?最后我得到了a.a,a.b,a.c和b.d(而不是b.a)。
是的,我保留了注释。只是混淆了类/类成员的名字。
我的选择:
<options>
<option>-injar ${project.build.directory}/classes</option>
<option>-outjar ${project.build.directory}/proguard-obf-classes </option>
<option>-target 1.8</option>
<option>-dontshrink</option>
<option>-dontoptimize</option>
<option>-dontusemixedcaseclassnames</option>
<option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod</option>
<option>-keepparameternames</option>
<option>-keepclasseswithmembers public class * {public static void main(java.lang.String[]);}</option>
<option>-keep @org.springframework.context.annotation.Configuration public class *</option>
<option>-keepclassmembers enum * { *; } </option>
</options>
谢谢。