Сохраняйте выбранные аннотации с помощью proguard - PullRequest
0 голосов
/ 04 декабря 2018

Можно ли даже сохранить выбранные аннотации с помощью Proguard?

Например, я хотел бы удалить все аннотации из

javax.xml.bind.annotation.*

, но сохранить все из

org.mycompany.annotations.MyAnnotation

Я пытался попросить Proguard оставить аннотацию, как показано ниже, но она не работает вообще.

-keep @interface org.mycompany.annotations.MyAnnotation

Или я должен сохранить атрибуты Аннотация и затем каким-то образом удалить оставшиеся ненужные аннотации?

1 Ответ

0 голосов
/ 05 декабря 2018

Не уверен, что если я все понял, обычно мы сохраняем все аннотации, используя

-keepattributes *Annotation*,

Если вы удалите это из списка -keepAttributes , вы потеряетедругая аннотация тоже, и код может не работать.

В идеале я буду играть с классами, к которым применяется аннотация, а не с самой аннотацией, например, если у вас есть аннотация MyModelClass, которая применяется к классу MyService

 @ MyModelClass
    public class MyService {
    }

и я не хочу, чтобы с классом MyService ничего не происходило, тогда я буду использовать

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

Как вы упоминали, вам не нужна некоторая аннотация jaxb, я предполагаю, что это аннотация времени компиляции.

Если вы хотите удалить все аннотации времени компиляции и сохранить аннотацию времени выполнения, вероятно, вам следует использовать -keepattributes RuntimeVisibleAnnotations

...