运行“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 模式文件。
我基本上想做一件事:
将 web 服务放入一个包含依赖项的 jar 中。这还应该包括所有 XML 模式文件,因为显然,使 Web 服务依赖于外部资源并不是一个好主意。
使用 maven 的最佳方法是什么?
我可能幼稚的解决方案是将 XML 模式文件手动复制到资源目录中,并告诉 CXF 在 jar 文件中解析它们。因此,我有两个更具体的问题:
1.) 是否可以让 maven 找到 XML 模式文件并将它们复制到适当的位置?2.) 让 CXF 在 jar 文件中查找模式文件的推荐方法是什么?
3.) 有没有更好的、最佳实践的解决方案来解决这个问题?
我关于 maven 程序集插件的 maven 配置是http://maven.apache.org/plugins/maven-assembly-plugin/usage.html最后两个部分的直接组合。