使用proguard保留选定的注释

问题描述 投票:0回答:1

是否可以使用Proguard保留选定的注释?

例如,我想删除所有注释

javax.xml.bind.annotation.*

但要保持一切

org.mycompany.annotations.MyAnnotation

我试图告诉Proguard保持如下的保护,但根本不起作用。

-keep @interface org.mycompany.annotations.MyAnnotation

或者我应该保留属性注释,然后以某种方式删除其他不需要的注释?

proguard
1个回答
0
投票

不确定我是否完全理解,通常我们通过使用保留所有注释

-keepattributes *Annotation*

如果从-keepAttributes列表中删除它,您也将丢失其他注释,并且代码可能无效。

理想情况下,我将使用应用了注释的类,而不是注释本身,例如,如果您具有应用于MyService类的注释MyModelClass

 @ MyModelClass
    public class MyService {
    }

我希望没有任何事情发生在MyService类,然后我将使用

-keep @MyModelClass class * {
    <methods>;
    <fields>;
}

正如您所提到的,您不需要一些jaxb注释,我假设它们是编译时注释。

如果你想删除所有编译时Annnotations并保留运行时注释,你应该使用-keepattributes RuntimeVisibleAnnotations

© www.soinside.com 2019 - 2024. All rights reserved.