簡體   English   中英

jaxb2-maven-plugin-從類生成xsd時如何關閉遞歸目錄遍歷

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM