我使用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>
元素中。相反,我指定我希望使用单个src/java/foo/rest/execution/model
元素包含整个<source>
目录。
问题在于有子包:
foo/rest/execution/model/builder
...包含其他不是jaxb注释的类,不应该是模式的一部分。 不幸的是,schemagen目标试图以递归方式遍历foo / rest / execution / model目录,因此尝试为子目录中的类生成模式。
有没有办法避免这种情况?
答案 0 :(得分:0)
您可以使用xjcSourceExcludeFilters
过滤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>
如果内置filter support无法满足您的需求,那么您可以通过将org.codehaus.mojo.jaxb2.shared.filters.pattern.PatternFileFilter
替换为您自己的AbstractFilter
实现来提供自己的实施。