Как управлять обфускацией весенних добытчиков и сеттеров в yguard

Привет, я использую Ant-задачу yguard, чтобы запутать свой проект, он хорошо подходит для переименования моих java-классов и соответствующих bean-файлов в весенних XML-файлах, но, поскольку методы getter и setter также переименованы в java, имена свойств в Spring Spring не совпадают... Так что я не могу продолжить. кто-нибудь может сказать мне, как исключить сеттеры и геттеры одни от запутывания?

1 ответ

YGuard не очень хорош в этой части, но почему бы вам не попробовать ProGaurd?

Вы можете обратиться к разделу примеров ProGaurd ( http://proguard.sourceforge.net/index.html), в котором говорится:

Обработка классов бобов

Если ваше приложение, апплет, сервлет, библиотека и т. Д. Широко используют интроспекцию классов bean-компонентов для поиска классов редактора bean-компонентов или методов getter и setter, то конфигурация может стать болезненной. Вы ничего не можете сделать, кроме как убедиться, что имена классов компонентов или имена методов получения и установки не меняются. Например:

-keep public class mypackage.MyBean {
    public void setMyProperty(int);
    public int getMyProperty();
}

-keep public class mypackage.MyBeanEditor

Если слишком много элементов для явного перечисления, могут быть полезны подстановочные знаки в именах классов и сигнатурах методов. Этот пример должен охватывать все возможные методы установки и получения в классах в пакете mybeans:

-keep class mybeans.** {
    void set*(***);
    void set*(int, ***);

    boolean is*(); 
    boolean is*(int);

    *** get*();
    *** get*(int);
}

Подстановочный знак '***' соответствует любому типу (примитив или не примитив, массив или не массив). Методы с аргументами 'int' соответствуют свойствам, которые являются списками.

и если вы также используете аннотации в своем приложении:

Внедрение ресурсов обработки

Если ваше приложение использует внедрение ресурсов в стиле Java EE, контейнер приложения автоматически назначит экземпляры классов ресурсов полям и методам, аннотированным @Resource. Контейнер применяет самоанализ, даже напрямую обращаясь к членам частного класса. Обычно он создает имя ресурса на основе имени типа и имени члена класса. Затем мы должны избежать, чтобы такие члены класса были удалены или переименованы:

-keepclassmembers class * {
    @javax.annotation.Resource *;
}

У среды Spring есть другая похожая аннотация @Autowired:

-keepclassmembers class * {
    @org.springframework.beans.factory.annotation.Autowired *;
}
Другие вопросы по тегам