同一个pom中的maven-jaxb2-plugin剧集

时间:2015-05-05 13:08:17

标签: maven jaxb2 maven-jaxb2-plugin

我一直在四处寻找这个问题。我找到了一些建议,但我不能让它们起作用,所以也许我做错了。

问题

我在同一个maven项目中有相互依赖的XSD。我有commonA.xsd& commonB.xsd有泛型类型,我有一个特定的xsd引用这两个。问题是我无法使分层生成工作。

我当前的pom.xml

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.12.3</version>
    <executions>
        <execution>
            <id>base</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <schemaIncludes>
                    <include>commonA.xsd</include>
                    <include>commonB.xsd</include>
                </schemaIncludes>
                <generatePackage>common</generatePackage>
                <generateDirectory>${project.build.directory}/generated-sources/xjc-common</generateDirectory>
            </configuration>
        </execution>

        <execution>
            <id>specific</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <schemaIncludes>
                    <include>specific.xsd</include>
                </schemaIncludes>
                <generatePackage>specific</generatePackage>
                <generateDirectory>${project.build.directory}/generated-sources/xjc-specific</generateDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

尝试解决方案

引用剧集文件

我找到了这个页面https://stackoverflow.com/a/11135186/284263,建议引用该剧集文件 [ERROR] Error while parsing schema(s).Location [ file:/path/to/xsd/COMMONA.XSD{122,60}].com.sun.istack.SAXParseException2; systemId: file:/path/to/xsd/COMMONA.XSD; lineNumber: 122; columnNumber: 60; (the above customization is attached to the following location in the schema)
这对我来说不起作用,而且感觉有点笨拙。

创建bindings.xjb

我也研究了这个答案https://stackoverflow.com/a/22559100/284263。我无法在任何地方找到任何“真实”的例子,我不知道这对我的案例是否是正确的方法。

参考maven artifact

我在插件的documentation中发现我可以做这样的事情:

<episodes>
    <episode>
        <groupId>org.jvnet.jaxb2.maven2</groupId>
        <artifactId>maven-jaxb2-plugin-tests-po</artifactId>
        <!--  Version of the artifact. May be omitted.
        The plugin will then try to find the version using
        the dependencyManagement and dependencies of the project. -->
        <version>${project.version}</version>
    </episode>
</episodes>

据我了解,这是一个外部参考。它不起作用,因为尚未在回购中存在工件,例如在开发和使用SNAPSHOT版本时,或者可能存在风险,因为它会引用旧版本。

有任何建议或更正吗? 谢谢你的时间。

0 个答案:

没有答案