「java -jar my-app-0.0.1-SNAPSHOT-jar-with-dependencies.jar」のようなパッケージ化されたアプリを実行すると、次のエラーが発生します。
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 47 in
XML document from URL [jar:file:/.../cxf/javafirst/target/my-app-0.0.1-SNAPSHOT-jar-with-dependencies.jar!/application-context.xml]
is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 47;
columnNumber: 61; cvc-complex-type.3.2.2: Attribute 'sendServerVersion'
is not allowed to appear in element 'httpj:engine'.
これは、apache.org で公開されている古い http-jetty.xsd スキーマが原因です。それは私の問題ではありません。私の問題は、次のような場合にはこれが起こらないことです:
maven jetty:run
また
maven exec:java
ここで、サービスはアンパックされたバイナリ ディレクトリに対して直接実行され、更新された正しい http-jetty.xsd スキーマ ファイルが明らかに検出されます。
私は基本的に1つのことをしたい:
依存関係を含む 1 つの jar に Web サービスを入れます。これには、すべての XML スキーマ ファイルも含める必要があります。これは、明らかに、Web サービスを外部リソースに依存させるのは得策ではないためです。
Mavenを使用してそれを行う最良の方法は何ですか?
私の素朴な解決策は、XML スキーマ ファイルをリソース ディレクトリに手動でコピーし、CXF に jar ファイルで解決するように指示することです。したがって、さらに具体的な質問が 2 つあります。
1.) Maven に XML スキーマ ファイルを見つけて、適切な場所にコピーさせることは可能ですか? 2.) CXF に jar ファイル内のスキーマ ファイルを検索させるための推奨される方法は何ですか?
3.) その問題に対するより良いベストプラクティスの解決策はありますか?
Maven アセンブリ プラグインに関する私の Maven 構成は、http://maven.apache.org/plugins/maven-assembly-plugin/usage.htmlの最後の 2 つのセクションを直接組み合わせたものです。