Проблемы Spring 3 NamespaceHandler с плагином Maven Shade

Spring 3.1.1.RELEASE с Apache Maven 3.0.3 и подключаемым модулем Maven Shade 1.6.

Использование плагина mvn shadow для упаковки артефакта в uber-jar, включая его зависимости:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
        <phase>package</phase>
        <goals>
            <goal>shade</goal>
        </goals>
        <configuration>
            <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                    <mainClass>com.MyApplication</mainClass>
                </transformer>
            </transformers>
        </configuration>
    </execution>
</executions>

Seems to package just fine but on execution complains of Spring NamespaceHandler issues:

Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/util]
Offending resource: class path resource [spring/test-context.xml]

Это относится как к util, так и к p-пространствам имен, но ожидайте, что это не ограничивается ими:

xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"

Если я перепишу свойство или список (util) от руки, проблемы исчезнут.


person Andrew Eells    schedule 14.05.2012    source источник


Ответы (1)


Попробуйте добавить в конфигурацию AppendingTransformer. . В примере специально упоминается, что это полезно для обработчиков Spring.

person user944849    schedule 14.05.2012
comment
Это также помогло мне, не работало с плагином maven-assembly, не работало с тенью, но работало с вашим ответом. Не могли бы вы объяснить, что здесь происходит и почему это сработало? - person drakonli; 25.08.2018