Затененный jar Невозможно найти Spring NamespaceHandler для пространства имен схемы XML [http://www.springframework.org/schema/data/jpa] - PullRequest
0 голосов
/ 18 марта 2019

Я получаю вышеуказанное исключение в моем веб-приложении, работающем в Tomcat, когда упаковал все мои зависимости, включая spring-data-jpa.jar, в один jar-файл с помощью maven-shaded-plugin и поместил в каталог WEB-INF / lib.

Проблема исчезнет, ​​если я упакую файл spring-data-jpa.jar непосредственно в WEB-INF / lib вместе с моим затененным jar-файлом?

NOTE: I will be running the same package as AWS Lambda hence I need to create a shaded jar.

1 Ответ

0 голосов
/ 19 марта 2019

Чтобы помочь другим, проблема заключалась в том, что несколько пружин - *. Jar файлов META-INF/spring.handlers файлы, которые перезаписывают друг друга при запуске maven-shade-plugin.

Для разрешения используйте <transformers> в конфигурации плагина. Моя окончательная конфигурация плагина выглядит следующим образом:

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <configuration>
        <createDependencyReducedPom>false</createDependencyReducedPom>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <!-- Remove signatures from transitive dependencies and append spring handlers and schemas -->
            <configuration>
                <transformers>
                    <transformer
                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.handlers</resource>
                    </transformer>
                    <transformer
                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.schemas</resource>
                    </transformer>
                </transformers>
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                    </filter>
                </filters>
            </configuration>
        </execution>
    </executions>
</plugin>

Выше объединит все обработчики в один файл в финальном банке. Наслаждайтесь: -)

...