2014-08-29 5 views
2

J'ai un projet Grails qui a une dépendance, qui est un autre de mes projets, qui utilise spring-oxm. Mon projet Grails peut <import resource="some.xml"> avec succès le .xml à l'intérieur du .jar, mais il montre cette erreur:erreur 'context-path' dans Spring OXM

Attribute 'context-path' is not allowed to appear in element 'oxm:jaxb2-marshaller' 

J'ai cette dépendance sur mon Grails BuildConfig.groovy:

compile ('org.springframework:spring-oxm:3.1.0.RELEASE') 

et cette dépendance sur mon autre (Maven) projet:

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-oxm</artifactId> 
     <version>3.1.0.RELEASE</version> 
    </dependency> 

Voici comment j'ai créé le haricot pour le OXM-placier:

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
    <property name="contextPath" value="com.somepackage.commons"/> 
</bean> 

Aussi, chaque fois que j'exécute les tests de mon projet Maven, le contexte de l'application de printemps se charge parfaitement, c'est pourquoi je suis sûr que cela fonctionne de manière autonome.

Quel est le problème ici? J'ai utilisé la même dépendance au printemps-oxm dans mes deux projets, pourquoi est-ce que je rencontre toujours ces erreurs? Besoin d'aide pour!

EDIT: Solution de contournement rapide ... au lieu d'importer mon projet Maven en tant que dépendance, j'ai copié-collé tout le code de mon projet Maven dans le projet Grails et ça marche très bien ... je veux toujours savoir ce qui s'est mal passé ici :(

EDIT 2: J'ai essayé de créer le bean d'une manière différente ... Au lieu de créer un haricot de printemps lui-même, j'ai utilisé l'espace de noms d'oxm.J'ai créé le marshaller dans mon projet Maven ressemblait à ceci:

<oxm:jaxb2-marshaller id="marshaller" context-path="com.somepackage.commons"/> 

ce qui est drôle est que était dans mon projet Grails (celui que je copie collé plus tôt), il ressemblait à ceci:

<oxm:jaxb2-marshaller id="marshaller" contextPath="com.somepackage.commons"/> 

Notez la convention camelCase de l'attribut contextPath. Pourquoi est-ce comme ça?

+0

J'ai trouvé le même comportement. En fait, l'éditeur xml de Spring Tool Suite se plaint que "contextPath" n'est pas valide mais Maven ne compilera pas à moins qu'il ne soit camelCased. Je n'ai pas étudié où les deux divergent et pourquoi encore. –

Répondre

1

Vérifiez que le pot d'oxygène du ressort dans le chemin de classe pointe vers la droite xsd. Vous trouverez le pointeur dans le fichier META-INF/spring.schemas. L'attribut "context-path" n'est pas défini dans spring-oxm-3.x.xsd. Il est défini dans spring-oxm-4.x.xsd

Questions connexes