无法使用wsdl2java和maven使用CXF生成客户端代码

时间:2013-05-20 07:16:37

标签: maven-2 cxf wsdl2java

我正在使用maven cxf-codegen-plugin从wsdl生成客户端文件但无法执行此操作。

我希望扫描文件夹src/main/wsdl中的所有wsdl文件,并在相应的文件夹中生成相应的客户端。请帮忙。

我的pom.xml是:

<build>
    <finalName>someFileName</finalName>
    <pluginManagement>
        <plugins>
            <plugin>
                 <groupId>org.apache.cxf</groupId>
                 <artifactId>cxf-codegen-plugin</artifactId>
                 <version>2.2.3</version>
                 <executions>
                     <execution>
                        <id>generate-sources</id>
                        <phase>process-resources</phase>
                         <configuration>
                             <sourceRoot>src/main/java</sourceRoot>
                             <wsdlRoot>${basedir}/src/main/wsdl</wsdlRoot> 
                        </configuration>
                         <goals>
                             <goal>wsdl2java</goal>
                         </goals>
                     </execution>
                 </executions>
             </plugin>
         </plugins>
    </pluginManagement>
</build>

3 个答案:

答案 0 :(得分:4)

这是我如何使用2.7.4版本,并在不同的包中创建生成的代码:

<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>${project.build.directory}/generated/src/main/java</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>${basedir}/src/main/wsdl/MyWsdl1.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>urn:mycompany:myproduct1:v1_0=com.my.project.product1</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>http://www.w3.org/2001/XMLSchema=com.my.project.common</extraarg>
                                </extraargs>
                            </wsdlOption>
                            <wsdlOption>
                                <wsdl>${basedir}/src/main/wsdl/MyWsdl2.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>urn:mycompany:myproduct2:v1_0=com.my.project.product2</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>http://www.w3.org/2001/XMLSchema=com.my.project.common</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

在这里您可以找到有关额外参数的更多信息: http://cxf.apache.org/docs/wsdl-to-java.html

对于wsdl文件夹的自动扫描,这也很有效:

<configuration>
                        <sourceRoot>${project.build.directory}/generated/src/main/java</sourceRoot>
                        <wsdlRoot>${basedir}/src/main/wsdl</wsdlRoot>
<includes>
    <include>**/*.wsdl</include>
</includes>
</configuration>

希望它有所帮助!

答案 1 :(得分:2)

我意识到这是一个老问题,但我刚碰到这个,所以我想回复其他人的利益。您正好评论<pluginManagement>标记,请参阅here。但是对于Eclipse中的错误说:

  

生命周期配置未涵盖的插件执行

您需要为build-helper-maven-plugin安装m2e连接器(单击错误,Eclipse应该指导您安装它)

答案 2 :(得分:0)

我将plugins标记放在pluginManagement标记内,错误消失了:

<pluginManagement>
   <plugins>
        <plugin>

            ..........................

        </plugin>
   </plugins> 
</pluginManagement>