[英]xsd import from different project, generate java class
我有兩個項目,A和B.在項目AI中有common.xsd文件,我使用cxf-xjc-plugin生成工作正常的java類。 接下來,我想重用這個創建的文件,並從項目B的main.xsd文件中的common.xsd中鍵入difinitions,並且不再從項目A生成類,但是有一個問題,因為我不能包含完整路徑我的main.xsd文件
<xs:import namespace="..." schemaLocation="PATH_TO_PROJECT_A/common.xsd" />
或者你的類路徑我讀到可以使用http,但我不能使用它。 有沒有辦法使用maven或其他東西來做到這一點?
是的,這是可能的,關鍵字是:
必需的免責聲明:我是提供這些功能的maven-jaxb2-plugin
的作者。
更新:
我試圖使用單獨的模式編譯,但不幸的是我不能忽略它。 我應該只為xsd文件創建單獨的jar並將其用作依賴項嗎? 現在我依賴於整個項目A,它包含生成的類和xsd文件
這就夠了。 您需要一個帶有生成類,XSD文件和META-INF/sun-jaxb.episode
。 所有這些通常都是默認生成的。
然后你可以將這個JAR用作“劇集”。 XJC將自動使用sun-jaxb.episode
資源作為綁定文件,並且該文件基本上表示“不為命名空間X中的模式生成任何內容,而是使用以下類”。 這是允許您避免冗余生成類的一部分。 這主要是有效的 ,但有時候XJC仍會產生一些東西 - 它們可以被安全地刪除。
另一件事是你想要使用JAR中的模式。 這可以通過目錄和特殊實體解析器來完成,默認情況下由maven-jaxb2-plugin
。
所以只需使用任何schemaLocation
,然后在目錄文件中重寫它:
REWRITE_SYSTEM
"https://acme.com/foo/a.xsd"
"maven:com.acme.foo:foo-a!/a.xsd"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.