【问题标题】:How to generate classes for XSD in Maven src/test, that reference XSD in src/main如何在 Maven src/test 中为 XSD 生成类,在 src/main 中引用 XSD
【发布时间】:2016-09-01 09:48:48
【问题描述】:

以下 maven 设置:

src/main/resources/BaseTypes.xsd
src/test/resources/MyTypeUsingBaseTypes.xsd

现在我想将 BaseTypes 生成到目标/类中,而将 MyTypeUsingBaseTypes 生成到目标/测试类中。

问题是,BaseTypes 也被生成(= 复制)到目标/测试类中。

我正在使用 org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.12.3,有两个执行:

<plugin>
  <groupId>org.jvnet.jaxb2.maven2</groupId>
     <artifactId>maven-jaxb2-plugin</artifactId>
     <version>0.12.3</version>
     <executions>
    <execution>
      <id>gen-schemas</id>
      <goals>
        <goal>generate</goal>
      </goals>
    </execution>

    <execution>
      <id>gen-test-schemas</id>
      <phase>generate-test-sources</phase>
      <goals>
        <goal>generate</goal>
      </goals>
      <configuration>
        <generateDirectory>target/generated-test-sources/xjc</generateDirectory>
        <addTestCompileSourceRoot>true</addTestCompileSourceRoot>
        <schemaDirectory>src/test/resources</schemaDirectory>
      </configuration>
    </execution>
  </executions>
</plugin>

【问题讨论】:

    标签: java maven xsd jaxb jaxb2-maven-plugin


    【解决方案1】:

    也许这样的事情可以完成这项工作(检查路径):

    尝试将以下选项添加到您的&lt;configuration&gt;

    &lt;schemaLanguage&gt; :它告诉文件的类型是什么(wsdl、wadl、ear 等)

    &lt;schemaIncludes&gt;:这让您有机会选择特定文件

    &lt;generatePackage&gt; : 将生成的 *.java 文件打包到选定的生成目录中

    这样,您可以根据需要为不同的架构写下尽可能多的执行。

    <executions>
        <execution>
            <id>xjc-schema2</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <schemaLanguage>wsdl</schemaLanguage>
                <schemaDirectory>src/test/resources</schemaDirectory>
                <schemaIncludes>
                    <include>MyTypeUsingBaseTypes.xsd</include>
                </schemaIncludes>
                <generatePackage>com.name.of.package.MyTypeUsingBaseTypes</generatePackage>
    
                <generateDirectory>target/generated-test-sources/xjc</generateDirectory>
                <clearOutputDir>false</clearOutputDir>
            </configuration>
        </execution>
        <execution>
            <id>xjc-schema2v2</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <schemaLanguage>wsdl</schemaLanguage>
                <schemaDirectory>src/main/resources</schemaDirectory>
                <schemaIncludes>
                    <include>BaseTypes.xsd</include>
                </schemaIncludes>
                <generatePackage>com.name.of.package.BaseTypes</generatePackage>
    
                <generateDirectory>target/generated-sources/xjc</generateDirectory>
                <clearOutputDir>false</clearOutputDir>
            </configuration>
        </execution>
    </executions>
    

    【讨论】:

    • 你应该解释一下你的提议...看看How to Answer
    • 现在更好看@JimHawkins?感谢您的建议
    猜你喜欢
    • 1970-01-01
    • 2021-07-24
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多