2014-06-16 53 views
3

我正在使用CXF生成SOAP客戶端的SOA項目。
我需要使用cxf-xjc-boolean插件用推土機映射和布爾屬性來工作,所以我跟着文檔在http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html,現在我有以下pom.xml摘錄:BadCommandLineException與maven cxf XJC插件

<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> 

當我運行的生成來源的目標(通過m2e Eclipse插件或comman dline)我得到這個錯誤:

[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

兩件事情:

  1. 放入<dependencies>了CXF-XJC布爾依賴的插件,而不是在你的項目依賴。
  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>