maven - BadCommandLineException 与 maven cxf XJC 插件

标签 maven jaxb cxf

我正在开发一个使用 CXF 生成 SOAP 客户端的 SOA 项目。
我需要使用 cxf-xjc-boolean 插件来处理 Dozer 映射和 bool 属性,所以我遵循了 http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html 上的文档。现在我有以下 pom.xml 摘录:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
    ...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <sourceRoot>${basedir}/src/main/java</sourceRoot>
                        <defaultOptions>
                            <frontEnd>jaxws21</frontEnd>
                        </defaultOptions>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${basedir}/src/main/wsdl/My.wsdl</wsdl>
                                <wsdlLocation>classpath:wsdl/My.wsdl</wsdlLocation>
                                <extraargs>
                                    <extraarg>-xjc-Xboolean</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
<dependencies>
            ...
    <dependency>
        <groupId>org.apache.cxf.xjcplugins</groupId>
        <artifactId>cxf-xjc-boolean</artifactId>
        <version>2.7.0</version>
    </dependency>
</dependencies>
</project>

当我运行 generate-sources 目标时(通过 m2e Eclipse 插件或命令行)我得到这个错误:

[ERROR] Failed to execute goal org.apache.cxf:cxf-codegen-plugin:2.7.3:wsdl2java (generate-sources) on project My-BL: Execution generate-sources of goal org.apache.cxf:cxf-codegen-plugin:2.7.3:wsdl2java failed: XJC reported 'BadCommandLineException' for -xjc argument:-extension -Xts -target 2.1

如何修复我的 pom.xml 以使 plunig 正常工作?

顺便说一句,我注意到存储库中没有插件的 2.7.3 版(受管理的,与我正在使用的 CXF 版本一致),所以我使用的是 2.7.0。这可能是个问题吗?

最佳答案

需要做两件事:

  1. 将 cxf-xjc-boolean 依赖项放在 <dependencies> 中对于插件,而不是在您的项目依赖项中。
  2. 正确的参数是bg (生成 getXYZ() 方法)或 bgi (生成 getXYZ() 和 isXYZ() 方法)而不是 boolean .

    <plugin>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-codegen-plugin</artifactId>
        <version>${cxf.version}</version>
        <executions>
            <execution>
                <id>generate-sources</id>
                <phase>generate-sources</phase>
                <goals>
                    <goal>wsdl2java</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <sourceRoot>${basedir}/target/generated-sources</sourceRoot>
            <wsdlOptions>
                <wsdlOption>
                    <wsdl>
                        ${basedir}/src/main/resources/PatientService.wsdl
                    </wsdl>
                    <wsdlLocation>classpath:PatientService.wsdl</wsdlLocation>
                    <extraargs>
                        <extraarg>-xjc-Xbgi</extraarg>
                    </extraargs>
                </wsdlOption>
            </wsdlOptions>
        </configuration>
        <dependencies>
            <dependency>
                <groupId>org.apache.cxf.xjcplugins</groupId>
                <artifactId>cxf-xjc-boolean</artifactId>
                <version>2.7.0</version>
            </dependency>
        </dependencies>
    </plugin>
    

关于maven - BadCommandLineException 与 maven cxf XJC 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24244515/

相关文章:

java - 基于 Maven 配置文件的 web.xml 配置

java - 使用多模块 Maven 应用程序编译 grpc

java - "build"如何部署纯文本maven Artifact

java - XML 解析抛出 NullPointerException

java - CXF - 未找到类附件的消息正文阅读器

web-services - JaxwsDynamicClientFactory 无法调用 webservice

java - 如何从我的 Maven 构建中排除资源,packagingExcludes 不起作用

java - 商标 (™) 符号显示为 ?在使用 JAXB 编码过程中?

java - JAXB : Read non-static attributes into a collection

soap - 用拦截器更改 CXF 中的前缀