有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java mavenjaxb2plugin在同一个项目中重用commons XSD

我有一个项目,它有一个模式a和B,都在同一个名称空间中。两者都导入同样使用相同名称空间的模式C。如何为A和B生成JAXB类来分离包,同时将C生成的JAXB类重用到commons包中

我已经知道我可能应该使用插曲,并使用为模式C生成的插曲作为绑定文件,分别执行模式A和B。问题是我不知道如何引用生成的插曲文件

下面是一个例子:

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.12.3</version>
    <executions>
        <execution>
            <id>generate-sources-C</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <generatePackage>com.mymodel.commons</generatePackage>
                <generateDirectory>${project.build.directory}/generated-sources/xjc-commons</generateDirectory>
                <schemas>
                    <schema><url>src/main/resources/xsd/mymodel/c.xsd</url></schema>
                </schemas>
            </configuration>
        </execution>
        <execution>
            <id>generate-sources-A</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <generatePackage>com.mymodel.a</generatePackage>
                <schemas>
                    <schema><url>src/main/resources/xsd/mymodel/a.xsd</url></schema>
                </schemas>
            </configuration>
        </execution>
        <execution>
            <id>generate-sources-B</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <generatePackage>com.mymodel.b</generatePackage>
                <schemas>
                    <schema><url>src/main/resources/xsd/mymodel/b.xsd</url></schema>
                </schemas>
            </configuration>
        </execution>
    </executions>
</plugin>

这将导致在以下位置创建一个事件文件:

target/generated-sources/xjc-commons/META-INF/sun-jaxb.episode

我如何在A和B的执行中引用此插曲/绑定文件Using Episodes只提到如何从其他jar依赖项引用一个事件文件(或者我只是没有正确理解它,这更可能)

我看到一个更老的答案建议pass it as a parameter ^{}给XJC,但这似乎对我没有任何帮助。我最终还是用C生成了三次相同的类


共 (0) 个答案