2017-07-06 83 views
0

我正在尝试使用插件jaxb2-maven-plugin从wsdl创建Java类。如何在jaxb2-maven-plugin version 2中从WSDL创建类java?

我与1.5版得到它和下面的代码(链接:Generate classes with jaxb2-maven-plugin from WSDL):

 <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>jaxb2-maven-plugin</artifactId> 
       <version>1.5</version> 
       <executions> 
        <execution> 
         <id>xjc</id> 
         <goals> 
          <goal>xjc</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <!-- Package to store the generated file --> 
        <packageName>com.example.demo.wsdl</packageName> 
        <!-- Treat the input as WSDL --> 
        <wsdl>true</wsdl> 
        <!-- Input is not XML schema --> 
        <xmlschema>false</xmlschema> 
        <!-- The WSDL file that you saved earlier --> 
        <schemaFiles>horarios.wsdl</schemaFiles> 
        <!-- The location of the WSDL file --> 
        <schemaDirectory>${project.basedir}/src/main/resources</schemaDirectory> 
        <!-- The output directory to store the generated Java files --> 
        <outputDirectory>${project.basedir}/src/main/java</outputDirectory> 
        <!-- Don't clear output directory on each run --> 
        <clearOutputDir>false</clearOutputDir> 
       </configuration> 
      </plugin> 

但是,当我更改为2.3.1,我得到以下错误:

Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.3.1:xjc (xjc) on project demo: MojoExecutionException: NoSchemasException -> [Help 1] 

有人知道如何使用WSDL文件与这个新的插件版本?

回答

0

我已经找到解决方案。

当JAXB2 Maven的插件版本为> = 2.0,你必须使用如下配置:

   <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>jaxb2-maven-plugin</artifactId> 
       <version>2.3.1</version> 
       <executions> 
        <execution> 
         <id>xjc</id> 
         <goals> 
          <goal>xjc</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <packageName>com.example.demo.wsdl</packageName> 
        <sourceType>wsdl</sourceType> 
        <sources> 
         <source>src/main/resources/horarios.wsdl</source> 
        </sources> 
        <outputDirectory>target/generated-sources/</outputDirectory> 
        <clearOutputDir>false</clearOutputDir> 
       </configuration> 
      </plugin> 

的区别不仅是sintaxis。该版本不会在项目内创建类(src/main/java),它会在您编写的目录outputDirectory和包packageName中创建。当你使用生成的类时,它是透明的,就好像它在同一个项目中一样。

+0

相关的更多信息: https://stackoverflow.com/questions/35242941/jaxb-maven-plugin-not-generating-classes –

0

如果你想开始一个XSD:

   <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>jaxb2-maven-plugin</artifactId> 
       <version>2.3.1</version> 
       <executions> 
        <execution> 
         <id>xjc</id> 
         <goals> 
          <goal>xjc</goal> 
         </goals> 
        </execution> 
       </executions> 

       <configuration> 
        <xjbSources> 
         <xjbSource>src/main/resources/global.xjb</xjbSource> 
        </xjbSources> 
        <sources> 
         <source>src/main/resources/Ventas.xsd</source> 
        </sources> 
        <outputDirectory>${basedir}/src/main/java</outputDirectory> 
        <clearOutputDir>false</clearOutputDir> 
       </configuration> 
      </plugin>