Как создать исполняемый jar на основе пружин с Maven?

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

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

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.cws.cs.Client</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>

        </plugin>
    </plugins>
</build>

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

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

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

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. Я не знаю, является ли это проблемой конфигурации плагина-шейдера или я пытаюсь сделать что-то невозможное. Было бы неправильно, если бы мне пришлось вручную создавать свой собственный файл spring.schemas (объединение других).

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

Мы ценим любые предложения.

Ответы на вопрос(5)

Ваш ответ на вопрос