8

我有一个Maven项目A,它的类路径中有一个/xsd/a.xsd。我还有一个带有 /xsd/b.xsd 的项目 B,它通过目录条目引用 /xsd/a.xsd。目录条目如下所示:

PUBLIC "http://foo.org/a" "maven:org.foo:a:jar::!/xsd/a.xsd"

注意 url 中的 maven 协议。org.jvnet.jaxb2.maven2:maven-jaxb22-plugin 使用该目录来生成带有来自依赖项的情节的 JAXB 注释 Java 类。

到目前为止一切都很好。

现在我想在 Eclipse 中编辑 /xsd/b.xsd。Eclipse 报告以下警告:

<xsd:import namespace="http://foo.org/a" />

因为它找不到 /xsd/a.xsd 没有 schemaLocation 属性。Eclipse 无法识别上面定义的目录条目。

找到的解决方法是在 Eclipse / Window / Preferences / XML / XML Catalog 中添加一个目录条目:

PUBLIC "http://foo.org/a" "jar:file:/home/alain/maven/repository/org/foo/a/1.0-SNAPSHOT/a-1.0-SNAPSHOT.jar!/xsd/a.xsd"

请注意对我的本地存储库(maven 是指向 .m2 的链接)和依赖项目的特定版本的引用。

有没有人遇到过这个问题并找到了更好的解决方法?

4

1 回答 1

1

我能想到的最好的是:

  • 使用 maven-dependency-plugin:unpack 提取项目中jar的xsds

  • 在 Eclipse / Window / Preferences / XML / XML Catalog 中从此处引用 xsd。

至少不会引用本地路径/版本。

注意,如果你已经有jaxb的目录,可以直接在eclipse中导入,无需一一编辑(通过导入菜单,不在XML Catalog中)。

于 2013-10-17T09:09:25.470 回答