![](/img/trans.png)
[英]jaxb2-maven-plugin ignores namespace when generating xsd - Two classes have the same XML type
[英]jaxb2-maven-plugin - how to turn off recursive directory traversal when generating xsd from classes
我正在使用jaxb2-maven-plugin從jaxb注釋類生成XSD。
配置看起來像這樣
<execution>
<id>rest-api-execution-schemagen</id>
<goals>
<goal>schemagen</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<sources>
<source>src/java/foo/rest/execution/model</source>
</sources>
<outputDirectory>${project.build.directory}/execution-api-xml-schema</outputDirectory>
</configuration>
</execution>
軟件包foo / rest / execution / model包含許多類,這就是為什么我希望避免在單獨的<source>
元素中列出所有它們的<source>
。 相反,我指定我希望使用單個<source>
元素包括整個src/java/foo/rest/execution/model
目錄。
問題是有子軟件包:
foo/rest/execution/model/builder
...包含其他未用jaxb注釋的類,因此不應成為架構的一部分。 不幸的是,schemagen目標試圖遞歸遍歷foo / rest / execution / model目錄,因此嘗試為子目錄中的類生成模式。
有辦法避免這種情況嗎?
您可以使用xjcSourceExcludeFilters
過濾由source
定義的source
即排除包,文件等。
例如:
<configuration>
<sources>
<source>src/java/foo/rest/execution/model</source>
</sources>
<xjcSourceExcludeFilters>
<filter implementation="org.codehaus.mojo.jaxb2.shared.filters.pattern.PatternFileFilter">
<patterns>
<pattern>src/java/foo/rest/execution/model/builder/*.java</pattern>
</patterns>
</filter>
</xjcSourceExcludeFilters>
...
</configuration>
如果內置過濾器支持無法滿足您的需求,那么您可以通過使用自己的AbstractFilter
實現替換org.codehaus.mojo.jaxb2.shared.filters.pattern.PatternFileFilter
提供自己的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.