私は依存関係を持つ Grails プロジェクトを持っています。これは私の別のプロジェクトであり、spring-oxm
. 私の Grails プロジェクトは<import resource="some.xml">
、.jar 内にある .xml を正常に処理できますが、次のエラーが表示されます。
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>
oxm-marshaller の Bean を作成する方法は次のとおりです。
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="com.somepackage.commons"/>
</bean>
また、Maven プロジェクトのテストを実行するたびに、Spring アプリケーション コンテキストが完全に読み込まれるため、スタンドアロンで確実に動作します。
ここで何が問題なのですか?両方のプロジェクトで同じ spring-oxm 依存関係を使用しましたが、これらのエラーがまだ発生するのはなぜですか? 助けが必要!
編集:簡単な回避策... Mavenプロジェクトを依存関係としてインポートする代わりに、MavenプロジェクトからGrailsプロジェクトに持っていたすべてのコードをコピーして貼り付けてみましたが、問題なく動作します...何がうまくいかなかったのか知りたいここ :(
編集 2: 別の方法で Bean を作成しようとしました... Spring Bean 自体を作成する代わりに、oxm 名前空間を使用しました。Maven プロジェクトでマーシャラーを作成すると、次のようになりました。
<oxm:jaxb2-marshaller id="marshaller" context-path="com.somepackage.commons"/>
おもしろいのは、私の Grails プロジェクト (以前にコピーして貼り付けたもの) では、次のようになっていることです。
<oxm:jaxb2-marshaller id="marshaller" contextPath="com.somepackage.commons"/>
contextPath 属性のキャメルケース規則に注意してください。なぜこのようになっているのですか?