Как создать исполняемый jar-файл на основе Spring с помощью maven?

У меня есть клиентский проект Spring-WS на основе Maven, который я хочу упаковать как одиночный jar-файл. В eclipse все работает нормально. Когда я пытаюсь упаковать его как исполняемый jar-файл, я получаю исключения ClassNotFound, поскольку jar-файлы Spring не включены в jar-файл моего приложения.

Поэтому я добавил maven-shade-plugin, чтобы включить все мои зависимости в jar приложения. Когда я смотрю на свою банку приложения, я вижу все файлы классов из всех включенных зависимостей (все библиотеки jar взорваны).


    
        
            maven-compiler-plugin
            
                1.6
                1.6
            
        

        
            org.apache.maven.plugins
            maven-jar-plugin
            2.4
            
                
                    
                        true
                        com.cws.cs.Client
                    
                
            
        

        
            org.apache.maven.plugins
            maven-shade-plugin
            1.7
            
                
                    package
                    
                        shade
                    
                
            

        
    

Моя проблема заключается в том, что в процессе упаковки мои многочисленные зависимости Spring имеют разные файлы META-INF/spring.schemas, которые переопределяют друг друга. Следовательно, в моей последней банке есть неполный файл spring.schemas.

Поэтому, когда я пытаюсь запустить свой исполняемый файл jar, я получаю сообщения об ошибках Spring, что файлы не могут быть найдены, поскольку файл spring.schemas неполный (файл jar Spring-WS переопределяет файл spring.schemas Spring-core).

META-INF/spring.schemas моего исполняемого файла jar:

http\://www.springframework.org/schema/web-services/web-services-1.5.xsd=/org/springframework/ws/config/web-services-1.5.xsd
http\://www.springframework.org/schema/web-services/web-services-2.0.xsd=/org/springframework/ws/config/web-services-2.0.xsd
http\://www.springframework.org/schema/web-services/web-services.xsd=/org/springframework/ws/config/web-services-2.0.xsd

Вместо Spring-beans.jar META-INF/spring.schemas:

http\://www.springframework.org/schema/beans/spring-beans-2.0.xsd=org/springframework/beans/factory/xml/spring-beans-2.0.xsd
http\://www.springframework.org/schema/beans/spring-beans-2.5.xsd=org/springframework/beans/factory/xml/spring-beans-2.5.xsd
http\://www.springframework.org/schema/beans/spring-beans-3.0.xsd=org/springframework/beans/factory/xml/spring-beans-3.0.xsd
http\://www.springframework.org/schema/beans/spring-beans-3.1.xsd=org/springframework/beans/factory/xml/spring-beans-3.1.xsd
http\://www.springframework.org/schema/beans/spring-beans.xsd=org/springframework/beans/factory/xml/spring-beans-3.1.xsd
http\://www.springframework.org/schema/tool/spring-tool-2.0.xsd=org/springframework/beans/factory/xml/spring-tool-2.0.xsd
http\://www.springframework.org/schema/tool/spring-tool-2.5.xsd=org/springframework/beans/factory/xml/spring-tool-2.5.xsd
http\://www.springframework.org/schema/tool/spring-tool-3.0.xsd=org/springframework/beans/factory/xml/spring-tool-3.0.xsd
http\://www.springframework.org/schema/tool/spring-tool-3.1.xsd=org/springframework/beans/factory/xml/spring-tool-3.1.xsd
http\://www.springframework.org/schema/tool/spring-tool.xsd=org/springframework/beans/factory/xml/spring-tool-3.1.xsd
http\://www.springframework.org/schema/util/spring-util-2.0.xsd=org/springframework/beans/factory/xml/spring-util-2.0.xsd
http\://www.springframework.org/schema/util/spring-util-2.5.xsd=org/springframework/beans/factory/xml/spring-util-2.5.xsd
http\://www.springframework.org/schema/util/spring-util-3.0.xsd=org/springframework/beans/factory/xml/spring-util-3.0.xsd
http\://www.springframework.org/schema/util/spring-util-3.1.xsd=org/springframework/beans/factory/xml/spring-util-3.1.xsd
http\://www.springframework.org/schema/util/spring-util.xsd=org/springframework/beans/factory/xml/spring-util-3.1.xsd

Я в тупике. Я не уверен, могу ли/как я могу упаковать все как один исполняемый файл jar. Я не знаю, проблема ли это в конфигурации плагина тени или я пытаюсь сделать что-то невозможное. Было бы неправильно, если бы мне пришлось вручную создавать свою собственную пружину.файл схемы (конкатенация других).

Возможно, я немного поторопился. Раскапывая больше информации о плагине тени, я заметил AppendingTransformer, который раньше пропустил. Однако меня беспокоит, как узнать, какие другие файлы имеют те же проблемы? Я обнаружил/обнаружил эту конкретную проблему Spring. Я понятия не имею о каких-либо других библиотеках, которые могут делать что-то подобное...

Буду признателен за любые предложения.

28
задан Eric B. 22 June 2012 в 16:49
поделиться