首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jaxb2-maven-plugin从WSDL生成类

使用jaxb2-maven-plugin从WSDL生成类
EN

Stack Overflow用户
提问于 2013-04-09 21:26:54
回答 6查看 97.2K关注 0票数 21

我在配置jaxb2-maven-plugin以从WSDL和多个XSD文件生成Java类时遇到了麻烦,这些文件都存在于相同的标准目录src/main/xsd中。

how to use jaxb2 maven plugin with inline XSD?的唯一相关之处在于,答案正确地建议使用插件配置中的wsdl参数,但这个问题实际上与内联XSD有关,而我的XSD是外部的。

插件目标参数在here中列出。

我的插件配置是:

代码语言:javascript
复制
<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>
        <packageName>com.x.y.model</packageName>
        <wsdl>true</wsdl>
    </configuration>
</plugin>

我使用mvn -X clean jaxb2:xjc对此进行了测试,但该插件忽略了调试输出中显示的.wsdl

代码语言:javascript
复制
[DEBUG] accept false for file c:\projects\foo\src\main\xsd\service.wsdl
[DEBUG] accept true for file c:\projects\foo\src\main\xsd\datatypes.xsd
[DEBUG] accept true for file c:\projects\foo\src\main\xsd\more-datatypes.xsd
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-04-09 21:26:54

通过检查传递给JAXB XJC的参数的Maven调试输出(以及一些试验和错误),我发现我需要向插件提供另外两个配置参数。

这将停止对XSD文件的插件扫描,只使用.wsdl作为源。例如,XSD文件作为<xsd:include schemaLocation="datatypes.xsd" />指令包含在WSDL中,这些指令在本地解析,导致来自WSDL和XSD的所有类型都作为Java类生成。

对我有效的配置部分是:

代码语言:javascript
复制
<configuration>
    <packageName>com.x.y.model</packageName>
    <wsdl>true</wsdl>
    <xmlschema>false</xmlschema>
    <schemaFiles>service.wsdl</schemaFiles>
</configuration>

没有<xmlschema>false</xmlschema> Maven错误的情况下:

org.apache.maven.lifecycle.LifecycleExecutionException:插件无法对项目执行目标org.codehaus.mojo:jaxb2-maven-

:1.5:xjc(默认-cli) foo:无法处理架构: /c:/projects/foo/src/main/xsd/service.wsdl

票数 27
EN

Stack Overflow用户

发布于 2015-07-18 02:17:04

如果您正在生成wsdl和xsd,请尝试使用不同的执行配置:它可能没有相同的schemaDirectory,或者插件在第二次执行时不会成功运行,因为它会根据此变量缓存执行。我建议这样做:

代码语言:javascript
复制
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <id>generate-sri-facturas</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xjc</goal> 
                    </goals> 
                    <configuration> 
                        <outputDirectory>target/generated-sources/sri</outputDirectory>
                        <packageName>${commonsource.packageName}</packageName> 
                        <schemaDirectory>src/main/resources/schema/xsd</schemaDirectory>
                        <schemaFiles>factura_v1.1.0.xsd</schemaFiles>
                    </configuration> 
                </execution> 
                <execution>
                    <id>generate-sri-autorizacion-comprobantes</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xjc</goal> 
                    </goals> 
                    <configuration> 
                        <outputDirectory>target/generated-sources/sri/autorizacion</outputDirectory>
                        <packageName>${commonsource.packageName}.autorizacion</packageName>
                        <wsdl>true</wsdl>
                        <xmlschema>false</xmlschema>
                        <schemaDirectory>src/main/resources/schema/wsdl</schemaDirectory>
                        <schemaFiles>AutorizacionComprobantes.wsdl</schemaFiles>
                    </configuration> 
                </execution> 
            </executions> 
        </plugin> 

我创建了一个xsd和一个wsdl文件夹来分隔配置。

票数 7
EN

Stack Overflow用户

发布于 2017-07-06 21:13:30

您可以在配置中使用以下代码:

代码语言:javascript
复制
              <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>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15903249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档