Весенняя загрузка - Proguard - упаковка муравья: org.springframework.beans.factory.BeanDefinitionStoreException: - PullRequest
0 голосов
/ 04 июля 2018

Мы выполняем запутывание в приложении весенней загрузки: У нас есть много компонентов в приложении, и мы предоставили любые конкретные имена для компонентов, так как они по умолчанию принимают имя класса, но в случае запутывания мы ниже исключения

@Component
public class Configuration

У нас много компонентов в нашем проекте.

Исключение:

ERROR - Application startup failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.Application]; nested exception is java.lang.IllegalArgumentException: No auto-configuration attributes found. Is com.Application annotated with EnableAutoConfiguration?
        at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:556)
        at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:185)
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:308)
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:228)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:272)
        at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:92)
        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
        at com.Application.main(Application.java:18)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.lang.IllegalArgumentException: No auto-configuration attributes found. Is com.Application annotated with EnableAutoConfiguration?
        at org.springframework.util.Assert.notNull(Assert.java:193)
        at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAttributes(AutoConfigurationImportSelector.java:126)
        at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.selectImports(AutoConfigurationImportSelector.java:94)
        at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:547)
        ... 21 common frames omitted

Может кто-нибудь предложить лучший способ, чем явное добавление имен для каждого компонента?


**

обновление

**

Файл основного класса также имеет следующую аннотацию

@ SpringBootApplication (scanBasePackages = {

, даже если мы используем простой демонстрационный проект и пытаемся запутать его

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

Как-то, как proguard запутывает файлы, связанные с пружиной. Я явно держу все банки непрозрачными.

org.springframework.beans.factory.BeanDefinitionStoreException: Failed обработать импорт кандидатов для класса конфигурации [Com.example.demo.DemoApplication]; вложенное исключение java.lang.IllegalArgumentException: нет атрибутов автоматической настройки найденный. Является ли com.example.demo.DemoApplication аннотированным EnableAutoConfiguration

Обновлено. добавление файла proguard.conf

-libraryjars <java.home>/lib/rt.jar
#-include ../build/annotations.pro


-keeppackagenames
-keepdirectories
-dontshrink
-dontoptimize
-dontwarn

#-applymapping input_mapping.dat
#-printmapping final_mapping.dat
#-dontusemixedcaseclassnames
#-forceprocessing
-keepattributes InnerClasses,EnclosingMethod,SourceFile,LineNumberTable,Deprecated,Signature,Exceptions,*Annotations*
#-ignorewarnings

# Keep - Applications. Keep all application classes that have a main method.

-keep class !com.companyname.** { *; }


-keepclassmembers class * {
    @org.springframework.beans.factory.annotation.* *;
} 

-keepclassmembers class * {
    @org.simpleframework.xml.* *;
}
...