У меня есть проект Grails, который имеет зависимость, которая является другим моим проектом, который использует spring-oxm
. Мой проект Grails может успешно <import resource="some.xml">
в .xml находится внутри .jar, но он показывает эту ошибку:Ошибка контекстного тракта в Spring OXM
Attribute 'context-path' is not allowed to appear in element 'oxm:jaxb2-marshaller'
У меня есть эта зависимость от моего Grails BuildConfig.groovy:
compile ('org.springframework:spring-oxm:3.1.0.RELEASE')
и эту зависимость от моего другой проект (Maven):
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>
Вот как я создал компонент для Охт-ИАС:
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="com.somepackage.commons"/>
</bean>
Кроме того, всякий раз, когда я запускаю тесты проекта Maven, весенний контекст приложения загружается отлично, поэтому я уверен, что он работает автономно.
В чем проблема? Я использовал ту же весеннюю зависимость от oxm в обоих моих проектах, почему я все еще сталкиваюсь с этими ошибками? Нужна помощь!
EDIT: Быстрое обходное решение ... вместо импорта моего проекта Maven в качестве зависимости, я попробовал скопировать все код, который у меня был из моего проекта Maven, в проект Grails, и он отлично работает ... все еще хочет знаете, что пошло не так :(
EDIT 2: Я попытался создать компонент по-другому ... Вместо создания самого Spring-компонента я использовал пространство имен oxm. Когда я создал маршаллер в моем проекте Maven, выглядело это так:
<oxm:jaxb2-marshaller id="marshaller" context-path="com.somepackage.commons"/>
что смешного было в том, что в моем проекте Grails (один я копия вставленного ранее), это выглядело так:
<oxm:jaxb2-marshaller id="marshaller" contextPath="com.somepackage.commons"/>
Обратите внимание на соглашение camelCase атрибута contextPath. Почему так?
Я нашел то же поведение. На самом деле, редактор xml Spring Tool Suite жалуется, что «contextPath» недействителен, но Maven не будет компилироваться, если он не будет camelCased. Я не исследовал, где двое расходятся и почему еще. –